策略设计模式
为了同一个目的通过不同的方式,这些方式就是策略。
策略设计模式的开发流程:
1.定义一个策略父类,该类为抽象的不可自己new对象,并且定义策略方法(不实现)。
2.创建各个策略实现类继承策略父类,并实现其继承父类的方法,
3.使用简单工厂设计模式,将所有的实现类的创建逻辑封装起来(使用了类的多态来实现)
4.通过工厂类获取策略实现类,并实现其策略共同的目的。
《1》抽象父类
为了同一个目的通过不同的方式,这些方式就是策略。
策略设计模式的开发流程:
1.定义一个策略父类,该类为抽象的不可自己new对象,并且定义策略方法(不实现)。
2.创建各个策略实现类继承策略父类,并实现其继承父类的方法,
3.使用简单工厂设计模式,将所有的实现类的创建逻辑封装起来(使用了类的多态来实现)
4.通过工厂类获取策略实现类,并实现其策略共同的目的。
《1》抽象父类
//抽象
public abstract class Strategy {
public abstract void AlgorithmInterface();
}
public abstract class Strategy {
public abstract void AlgorithmInterface();
}
《2》继承父类的子类实现
//继承了公共的父类接口
public class ConnStrategyB extends Strategy {
@Override
public void AlgorithmInterface() {
System.out.println("方法B");
}
}
public class ConnStrategyB extends Strategy {
@Override
public void AlgorithmInterface() {
System.out.println("方法B");
}
}
------------------------------------------------
public class ConnStrategyA extends Strategy {
@Override
public void AlgorithmInterface() {
System.out.println("方法A");
}
}
《3》工厂设计模式实现策略设计模式
@Override
public void AlgorithmInterface() {
System.out.println("方法A");
}
}
《3》工厂设计模式实现策略设计模式
public class CashContext {
Strategy strategy = null;
public CashContext(String type){
switch (type) {
case "使用A算法":
strategy = new ConnStrategyA();
break;
case "使用B算法":
strategy = new ConnStrategyB();
break;
default:
break;
}
}
public void getResult(){
strategy.AlgorithmInterface();
}
}
Strategy strategy = null;
public CashContext(String type){
switch (type) {
case "使用A算法":
strategy = new ConnStrategyA();
break;
case "使用B算法":
strategy = new ConnStrategyB();
break;
default:
break;
}
}
public void getResult(){
strategy.AlgorithmInterface();
}
}
《4》测试类
public class StrategyMain {
public static void main(String[] args) {
CashContext cc = new CashContext("使用A算法");
cc.getResult();
cc = new CashContext("使用B算法");
cc.getResult();
}
}
public static void main(String[] args) {
CashContext cc = new CashContext("使用A算法");
cc.getResult();
cc = new CashContext("使用B算法");
cc.getResult();
}
}
单一原则:
对于程序的设计和开发过程中,适当的使用单一原则,有利于代码的维护,将模块的耦合降到最低。一个代码块只是实现一个功能,这样更专一更专业。例如:现实中的手机和照相机,手机相素越来越高使用越来越方便,但是为什么专业的摄影爱好者需要去买昂贵的照相机,这就是相机的单一功能,提高了她的专业性,好用性。
依赖倒转原则:
将实现关注在实现类上,而不是实现功能上;底层模块需要依赖父层模块。这样设计的系统更易扩展和维护