标签:
什么是策略模式?
策略模式定义了一系列的算法或行为,并将每一个算法或行为封装起来,而且使它们还可以相互替换。策略模式让算法或行为独立于使用它的客户而独立变化。
为什么使用策略模式?
策略模式将应用中需要经常变化的代码独立出来,应和那些不需要经常变化的代码分开。
策略模式针对接口,而不是类进行编程。
策略模式在类中多用组合,少用继承。
怎么使用策略模式?
策略模式的组成:
策略模式的使用类图如下:
package com.test.zhj; public interface IStrategy { public void operate(); }
三个继承接口的具体操作
package com.test.zhj; public class BackDoor implements IStrategy { public void operate() { System.out.println("开后门"); } }
package com.test.zhj; public class BlockEnemy implements IStrategy{ public void operate() { // TODO Auto-generated method stub System.out.println("断后"); } }
package com.test.zhj; public class GivenGreenLight implements IStrategy{ public void operate() { // TODO Auto-generated method stub System.out.println("开绿灯"); } }
封装策略的操作类Context,将某一种策略作为一个参数传入,并实现其具体操作。
package com.test.zhj; public class Context { private IStrategy straegy; public Context(IStrategy strategy){ this.straegy = strategy; } public void operate(){ this.straegy.operate(); } }
策略类的具体使用:
package com.test.zhj; public class Person { public static void main(String[] args) { System.out.println("开始"); Context context; System.out.println("第一种策略:"); context=new Context(new BackDoor()); context.operate(); System.out.println("第二种策略:"); context=new Context(new GivenGreenLight()); context.operate(); System.out.println("第三种策略:"); context=new Context(new BlockEnemy()); context.operate(); System.out.println("结束"); } }
运行结果如下:
策略模式的优点与缺点?
优点:
缺点:
因为是学习笔记,所以以上内容全部来自于各大网站和书籍。
标签:
原文地址:http://www.cnblogs.com/scetopcsa/p/4294283.html