设计模式之策略模式(Strategy Pattern)
2013-11-15 09:40
204 查看
策略就是方法。策略模式的优点是高内聚低耦合,扩展性强。下面是一个简单的Demo:
Demo描述:定义一个接口,定义三个(可以更多)方法实现该接口,定义“盛放”这些方法的类,这里的“盛放”就是持有引用的意思,这里要动态持有引用,不建议写死。
接口:
public interface Methord {
public void operate();
}
实现方法:
//方法一
public class Methord_First implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法一实现了!!");
}
}
//方法二
public class Methord_Second implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法二实现了!!");
}
}
//方法三
public class Methord_Third implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法三实现了!!");
}
}
持有不通策略引用的类
//关键
//在该类中声明接口,利用该类的构造方法,间接让该类动态持有不通策略的引用,继而能使用其中方法。
public class Context {
public Methord methord;
public Context(Methord methord){
this.methord = methord;
}
public void context_operate(){
methord.operate();
}
}
测试类
public class Test {
public static void main(String[] args){
Context context;
//方法一
context = new Context(new Methord_First());
context.context_operate();
//方法二
context = new Context(new Methord_Second());
context.context_operate();
//方法三
context = new Context(new Methord_Third());
context.context_operate();
}
}
打印结果:
方法一实现了!!
方法二实现了!!
方法三实现了!!
Demo描述:定义一个接口,定义三个(可以更多)方法实现该接口,定义“盛放”这些方法的类,这里的“盛放”就是持有引用的意思,这里要动态持有引用,不建议写死。
接口:
public interface Methord {
public void operate();
}
实现方法:
//方法一
public class Methord_First implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法一实现了!!");
}
}
//方法二
public class Methord_Second implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法二实现了!!");
}
}
//方法三
public class Methord_Third implements Methord {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("方法三实现了!!");
}
}
持有不通策略引用的类
//关键
//在该类中声明接口,利用该类的构造方法,间接让该类动态持有不通策略的引用,继而能使用其中方法。
public class Context {
public Methord methord;
public Context(Methord methord){
this.methord = methord;
}
public void context_operate(){
methord.operate();
}
}
测试类
public class Test {
public static void main(String[] args){
Context context;
//方法一
context = new Context(new Methord_First());
context.context_operate();
//方法二
context = new Context(new Methord_Second());
context.context_operate();
//方法三
context = new Context(new Methord_Third());
context.context_operate();
}
}
打印结果:
方法一实现了!!
方法二实现了!!
方法三实现了!!
相关文章推荐
- Java设计模式之策略模式(一)
- 23种经典设计模式之策略模式
- 设计模式之策略模式01
- 设计模式学习1——策略模式(Strategy)
- 第二十三篇 设计模式--策略模式模式
- 设计模式之策略模式
- Android开发中无处不在的设计模式——策略模式
- 设计模式学习--策略模式
- java 设计模式 策略模式 以英雄联盟为背景
- android设计模式-策略模式
- 设计模式之策略模式
- 【设计模式】策略模式
- 设计模式之策略模式
- java设计模式之策略模式
- 设计模式开始--策略模式
- 设计模式(一)之策略模式
- 系统架构设计——设计模式之策略模式
- 最常用的设计模式-----策略模式(C++实现)
- 设计模式之策略模式
- 【实战】设计模式应用之策略模式