1.变化的和不变化的独立出来
2.面向接口编程
3.多组合,少继承
例子:数据的存储是存储到网络或者存储到文件。我们将存储(save)这个行为写成接口,各种存储方式来实现接口。抽象类中组合各种存储方式。
public class 策略设计模式 {
public static void main(String[] args) {
BaseSave user=new User();
user.setSave(new FileSave());
user.add("add");
}
}
//把可变的行为抽象出来,定义一系列算法.接口定义行为
interface Save{
public void save(String date) ;
}
class FileSave implements Save{
@Override
public void save(String date) {
// TODO Auto-generated method stub
System.out.println("保存到文件中");
}
}
class NetSave implements Save{
@Override
public void save(String date) {
// TODO Auto-generated method stub
System.out.println("把数据保存到网络上");
}
}
abstract class BaseSave{//组合
public Save save;
public void setSave(Save save) {//绑定接口,组合算法
this.save=save;
}
public void add(String date) {
System.out.println("检查数据合法性");
save.save(date);
System.out.println("数据保存完毕");
}
}
class User extends BaseSave{
}
如果有什么不正确的地方还愿各位前辈帮忙指出,谢谢。