第20条:类层次优于标签类
第21条:用函数对象表示策略
大概是更容易维护吧
例:
1. 策略接口
public interface People {
void call(String who);
}
2. 实现接口的方式,实现类没有域,就像工具类, 没必要允许创建多个实例,所以用单例。
//活动play之打麻将
public enum Son1 implements People {
INSTANCE;
public void call(String who) {
System.out.println(who + ": 打麻将");
}
}
3. 把策略通过参数的方式传到要调用的方法中。其实就是执行一下参数对象的方法而已。
//活动类
public class Son3 {
//活动study
public void study(String who) {
}
//活动play
public void play(String who, People p) {
p.call(who);
}
}
4. 测试。 给方法传策略的实例,或者用匿名类的方式。
注:匿名类的方式不如单例, 执行多次会创建多个没必要创建的策略实例。
@Test
public void Test2() {
Son3 s3 = new Son3();
s3.play("张三",Son1.INSTANCE);
s3.play("李四", new People() {
public void call(String who) {
System.out.println(who+": 搓泥");
}
});
}
本文探讨了在软件设计中使用策略模式与单例模式相结合的优势,通过具体示例展示了如何利用这两种模式来提高代码的灵活性和可维护性。策略模式通过定义一系列算法,并将每个算法封装起来,使它们可以互相替换,从而让算法独立于使用它的客户。单例模式确保一个类只有一个实例,并提供一个全局访问点。

被折叠的 条评论
为什么被折叠?



