2014/7/19 策略模式
来源:互联网 发布:矩阵行列式 编辑:程序博客网 时间:2024/06/05 16:36
一:策略模式例子:
先附上代码:
IStrategy.java
package strategyPattern;public interface IStrategy {public void operate();}
BackDoor.java
package strategyPattern;public class BackDoor implements IStrategy{public void operate() {// TODO Auto-generated method stubSystem.out.println("妙计1");}}
GivenGreenLight.java
package strategyPattern;public class GivenGreenLight implements IStrategy{public void operate() {// TODO Auto-generated method stubSystem.out.println("妙计2");}}
BlockEnemy.java
package strategyPattern;public class BlockEnemy implements IStrategy{public void operate() {// TODO Auto-generated method stub System.out.println("妙计3");}}
Context.java
package strategyPattern;//封装类(即锦囊)public class Context {private IStrategy strategy;//构造函数:决定使用哪个妙计public Context(IStrategy _strategy){this.strategy = _strategy;}//使用计谋public void operate(){this.strategy.operate();}}
ZhaoYun.java
package strategyPattern;public class ZhaoYun {public static void main(String[] args){Context context;System.out.println("---使用第一个妙计---");context = new Context(new BackDoor());context.operate();System.out.println("\n");System.out.println("---使用第二个妙计---");context = new Context(new GivenGreenLight());context.operate();System.out.println("\n");System.out.println("---使用第三个妙计---");context = new Context(new BlockEnemy());context.operate();System.out.println("\n");}}
二.策略模式定义:
策略模式使用的是面向对象中的继承和多态机制
三个角色如下:
1.Context封装角色:起封装作用,屏蔽高层模块对策略,算法的直接访问
2.Strategy抽象策略角色:通常为借口,定义每个策略或算法必须具有的属性和方法
3.ConcreteStrategy具体策略角色:实现抽象策略角色的操作
通用源码如下:
Strategy.java
package strategyPattern;//抽象策略角色public interface Strategy {public void doSomething();}
ConcreteStrategy1.java
package strategyPattern;//具体策略角色public class ConcreteStrategy1 implements Strategy{public void doSomething() {// TODO Auto-generated method stubSystem.out.println("策略1的具体实现");}}
ConcreteStrategy2.java
package strategyPattern;//具体策略角色public class ConcreteStrategy2 implements Strategy{public void doSomething() {// TODO Auto-generated method stubSystem.out.println("策略1的具体实现");}}
Context.java
package strategyPattern;//封装角色public class Context {private Strategy strategy = null;public Context(Strategy _strategy){this.strategy = _strategy;}public void doAnything(){this.strategy.doSomething();}}
Client.java
package strategyPattern;//高层模块public class Client{public static void main(String[] args){Strategy strategy = new ConcreteStrategy1();Context context = new Context(strategy);context.doAnything();}}
0 0
- 2014/7/19 策略模式
- 2014-7-29 Java 设计模式——策略模式
- 语言与模式-19策略模式
- 设计模式(19) - 策略模式
- 设计模式(7)--策略模式(2)
- 设计模式7——策略模式
- 7、python设计模式之策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- Set Matrix Zeroes
- 判断当前设备是手机还是平板
- 二分查找初步
- hdu 1232 畅通工程(并查集)
- 黑马程序员--7k之银行业务调度系统
- 2014/7/19 策略模式
- MTK平台在缅甸语环境下修改时间显示为阿拉伯数字 如:16:45
- 计算1的个数
- bootstrap之DumpWindowHierarchy
- 全排列的实现
- 手机产品设计禁忌
- 公共免费WiFi频频中招怎么破?
- 深入理解计算机系统第二章家庭作业(2.68-2.82)
- 通过<a href=""></a>和<form action/>的不同+页面日期格式化