策略模式结合简单工厂模式
2008-09-19 22:42
429 查看
package Stragery;
public abstract class Operation {
public abstract int oper(int a);
}
各自的算法实现:
package Stragery;
public class OperationImpl extends Operation {
public int oper(int a)
{
System.out.println("使用算法1");
return a;
}
}
class OperationImplB extends Operation {
public int oper(int a)
{
System.out.println("使用算法2");
return a+2;
}
}
class OperationImplC extends Operation {
public int oper(int a)
{
System.out.println("使用算法3");
return a+3;
}
}
策略类:
public class StrageryContext {
Operation oper=null;
public StrageryContext(int no)
{
switch (no)
{
case 1:
OperationImpl os=new OperationImpl();
oper=os;
break;
case 2:
OperationImplB os1=new OperationImplB();
oper=os1;
break;
case 3:
OperationImplC os2=new OperationImplC();
oper=os2;
break;
}
}
public int getResult(int a)
{
return oper.oper(a);
}
}
Client使用类:
public class Client {
public static void main(String args[]){
StrageryContext context;
int a;
System.out.println("演示调用算法1");
context=new StrageryContext(new Integer(1));
a=12;
context.getResult(a);
System.out.println("演示调用算法2");
context=new StrageryContext(new Integer(2));
context.getResult(a);
System.out.println("演示调用算法3");
context=new StrageryContext(new Integer(3));
a=12;
context.getResult(a);
}
}
public abstract class Operation {
public abstract int oper(int a);
}
各自的算法实现:
package Stragery;
public class OperationImpl extends Operation {
public int oper(int a)
{
System.out.println("使用算法1");
return a;
}
}
class OperationImplB extends Operation {
public int oper(int a)
{
System.out.println("使用算法2");
return a+2;
}
}
class OperationImplC extends Operation {
public int oper(int a)
{
System.out.println("使用算法3");
return a+3;
}
}
策略类:
public class StrageryContext {
Operation oper=null;
public StrageryContext(int no)
{
switch (no)
{
case 1:
OperationImpl os=new OperationImpl();
oper=os;
break;
case 2:
OperationImplB os1=new OperationImplB();
oper=os1;
break;
case 3:
OperationImplC os2=new OperationImplC();
oper=os2;
break;
}
}
public int getResult(int a)
{
return oper.oper(a);
}
}
Client使用类:
public class Client {
public static void main(String args[]){
StrageryContext context;
int a;
System.out.println("演示调用算法1");
context=new StrageryContext(new Integer(1));
a=12;
context.getResult(a);
System.out.println("演示调用算法2");
context=new StrageryContext(new Integer(2));
context.getResult(a);
System.out.println("演示调用算法3");
context=new StrageryContext(new Integer(3));
a=12;
context.getResult(a);
}
}
相关文章推荐
- 简单工厂模式和策略模式结合使用php
- 学习设计模式之结合简单工厂,策略,装饰的计算器
- 简单工厂和策略模式结合
- 3.续策略模式 策略模式与简单工厂模式结合
- 简单工厂与策略模式的结合
- 大话设计模式之策略模式(结合简单工厂),程序完善过程蕴含智慧
- 策略模式、简单工厂结合
- 简单工厂模式和策略模式的区别与结合
- 简单工厂设计模式实现商店买牙膏收费案例过渡到结合策略模式的理由全解
- 策略模式结合简单工厂模式
- 策略模式与简单工厂模式
- 设计模式(2)结合代码和例子来理解简单工厂模式
- C#学习笔记之 策略与简单工厂的结合
- SqlHelper简单实现(通过Expression和反射)6.Providor模式(工厂+策略)可配置数据库选择
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- 对设计模式的总结之简单工厂与策略模式
- “模”法无边—策略模式+简单工厂实现下机收费
- 策略模式:策略模式与简单工厂模式的异同
- 简单工厂 和 策略模式的区别