-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLesson5_11.java
More file actions
48 lines (39 loc) · 1 KB
/
Lesson5_11.java
File metadata and controls
48 lines (39 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
策略模式(strategy Pattern):定義一系列的算法,將每一種算法封裝起來
可以互相替換使用,策略模式讓算法獨立於使用他的客戶應用而獨立變化
把可變的行為抽象出來,這樣的好處是這些行為可以在使用時相互替換
*/
public class Lesson5_11{
public static void main(String[] args){
BaseService user = new UserService();
user.setIsave(new FileSave());
user.add("user");
}
}
//把可變的行為抽象出來,定義一系列的算法
interface ISave{
public void save(String data);
}
class FileSave implements ISave{
public void save(String data){
System.out.println("把數據存到文件中"+data);
}
}
class NetSave implements ISave{
public void save(String data){
System.out.println("把數據存到網路中"+data);
}
}
abstract class BaseService{
private ISave iSave;//組合接口(也就是把他當屬性塞入class)
public void setIsave(ISave iSave){
this.iSave = iSave;
}
public void add(String data){
System.out.println("檢查數據合法性");
iSave.save(data);
System.out.println("數據保存完畢");
}
}
class UserService extends BaseService{
}