1 /**
2 * 策略模式(Strategy Pattern),定义了一系列的算法,
3 * 将每一种算法封装起来可以相互替换使用,
4 * 策略模式让算法独立于使用它的客户应用而独立变化.
5 *
6 *
7 */
8 public class SixFive {
9 public static void main(String[] args) {
10 //为什么是 FileSave输出了 不是NetSave输出了?
11 //this.iSave = iSave; 此时iSave就是File Save的实例化对象.
12 BaseService userBaseService = new UserService();
13 userBaseService.setiSave(new NetSave());
14 // userBaseService.setiSave(new FileSave());
15 userBaseService.add("我是文件");
16 }
17 }
18 // 将可变的行为抽象出来,定义一系列的算法.
19 interface ISave{
20 public void save(String data);
21 }
22 class FileSave implements ISave{
23 @Override
24 public void save(String data) {
25 // TODO Auto-generated method stub
26 System.out.println("把数据保存到文件中..."+data);
27 }
28 }
29 class NetSave implements ISave{
30 @Override
31 public void save(String data) {
32 // TODO Auto-generated method stub
33 System.out.println("把数据保存到网络中..."+data);
34 }
35 }
36 abstract class BaseService{
37 private ISave iSave;
38 public void setiSave(ISave iSave) {
39 this.iSave = iSave;
40 }
41 public void add(String data){
42 System.out.println("检查数据合法性...");
43 iSave.save(data);
44 System.out.println("数据保存完毕..");
45 }
46 }
47 class UserService extends BaseService{
48
49 }