/**
* 策略模式,定义了一系列的算法,将每一种算法封装起来并可以相互替换使用
* 策略模式让算法独立于使用它的客户应用而独立变化。
* 把可变的行为抽象出来,这样的好处是这些行为可以在真正使用时相互替换。
*/
public class Test1 {
public static void main(String[] args) {
ISave iSave = new ISave() {
@Override
public void save(String data) {
System.out.println("实例化一个接口的数据"+data);
}
};
BService us=new UService();
us.setiSave(iSave);
us.add("us");
us.setiSave(new FileSave());
us.add("us1");
us.setiSave(new NetSave());
us.add("u2");
}
}
//把可变的行为抽象出来,定义一系列的算法
interface ISave{
public void save(String data);
}
class FileSave implements ISave{
public void save(String data) {
System.out.println("把数据保存到文件中..."+data);
}
}
class NetSave implements ISave{
@Override
public void save(String data) {
System.out.println("把数据保存在网络上..."+data);
}
}
//OO设计原则,面向接口编程(面向抽象编程),封装变化save,多用组合,少用继承
abstract class BService{
private ISave iSave;
public void setiSave(ISave iSave) {
this.iSave = iSave;
}
public void add(String data){
System.out.println("检查数据合法性...");
iSave.save(data);
System.out.println("数据保存完毕。");
}
}
class UService extends BService{
}