java的设计模式之二
2016-08-19 11:39
204 查看
策略模式
这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。
package org.sp.strategy;
/**
* 加法具体策略类
* @author
*
*/
public class Addition extends Operation {
@Override
public float parameter(float a, float b) {
return a+b;
}
}
package org.sp.strategy;
/**
* 除法具体策略类
* @author
*
*/
public class Division extends Operation {
@Override
public float parameter(float a, float b) {
return a/b;
}
}
package org.sp.strategy;
/**
* 乘法具体策略类
* @author
*
*/
public class Multiplication extends Operation{
@Override
public float parameter(float a, float b) {
return a*b;
}
}
package org.sp.strategy;
/**
* 减法具体策略类
* @author
*
*/
public class Subtration extends Operation {
@Override
public float parameter(float a, float b) {
return a-b;
}
}
package org.sp.strategy;
/**
* 抽象策略类也可以使用接口来代替
* @author
*
*/
public abstract class Operation {
public abstract float parameter(float a, float b);
}
package org.sp.strategy;
/**
* 策略环境类
* @author
*
*/
public class Condition {
public static final Addition add = new Addition();
public static final Subtration sub = new Subtration();
public static final Multiplication mul = new Multiplication();
public static final Division div = new Division();
}
package org.sp.strategy;
/**
* 测试客户端
* @author
*
*/
public class Client {
public static void main(String[] args) {
float a = 100;
float b = 25;
System.out.println(Condition.div.parameter(a, b));
}
}
这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。
package org.sp.strategy;
/**
* 加法具体策略类
* @author
*
*/
public class Addition extends Operation {
@Override
public float parameter(float a, float b) {
return a+b;
}
}
package org.sp.strategy;
/**
* 除法具体策略类
* @author
*
*/
public class Division extends Operation {
@Override
public float parameter(float a, float b) {
return a/b;
}
}
package org.sp.strategy;
/**
* 乘法具体策略类
* @author
*
*/
public class Multiplication extends Operation{
@Override
public float parameter(float a, float b) {
return a*b;
}
}
package org.sp.strategy;
/**
* 减法具体策略类
* @author
*
*/
public class Subtration extends Operation {
@Override
public float parameter(float a, float b) {
return a-b;
}
}
package org.sp.strategy;
/**
* 抽象策略类也可以使用接口来代替
* @author
*
*/
public abstract class Operation {
public abstract float parameter(float a, float b);
}
package org.sp.strategy;
/**
* 策略环境类
* @author
*
*/
public class Condition {
public static final Addition add = new Addition();
public static final Subtration sub = new Subtration();
public static final Multiplication mul = new Multiplication();
public static final Division div = new Division();
}
package org.sp.strategy;
/**
* 测试客户端
* @author
*
*/
public class Client {
public static void main(String[] args) {
float a = 100;
float b = 25;
System.out.println(Condition.div.parameter(a, b));
}
}
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- 设计模式---状态模式在web前端中的应用
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C# 设计模式系列教程-建造者模式
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用