设为首页 加入收藏

TOP

策略模式 和 模版方法模式(Template method)(二)
2014-11-24 12:02:19 来源: 作者: 【 】 浏览:78
Tags:策略 模式 模版 方法 Template method
o today until Tomorrow
* @version 1.0.0
*/
public class TestBookPrice {
public static void main(String[] args) {
MemberStrategy strategy=new AdvancedMemberStrategy();
BookPrice bookPrice = new BookPrice(strategy,99.0);
System.out.println("图书价格是:"+bookPrice.getRealBookPrice());
}
}
2 模版方法模式
2.1 模版方法模式
定义一个算法的骨架,而将一些实现步骤延迟到子类中。把不变的行为搬到超类,
去除子类中重复的代码来体现他的优势。
类图如下:
2.2 应用场景
(1)一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现
(2)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个
调用这些新的操作的模板方法来替换这些不同的代码。
实现代码如下:
[java]
/**
* @Title:模版方法抽象类--定义一个业务的骨架,而将一些实现步骤延迟到子类中
* @Description:TODO
* @Company: Orclight's Studio
* @author: shuzl 2013-3-12 下午02:10:38
* @motto: Never put off what you can do today until Tomorrow
* @version 1.0.0
*/
public abstract class AbstractTemplate {
/**
*
* executeMain(需要在子类实现)
* @createDate 2013-3-12 下午02:12:43
* @since 1.0.0
*/
public abstract void executeMain();
public void execute() {
beforeAction();
executeMain();
afterAction();
}
public void beforeAction() {
System.out.println("before Action...");
}
public void afterAction() {
System.out.println("after Action...");
}
}
[java]
/**
* @Title:模版方法子类--实现其中可变的部分
* @Description:TODO
* @Company: Orclight's Studio
* @author: shuzl 2013-3-12 下午02:13:09
* @motto: Never put off what you can do today until Tomorrow
* @version 1.0.0
*/
public class TemplateImpl extends AbstractTemplate{
public void executeMain() {
System.out.println("核心操作处理...实现方式一");
}
}
[java]
/**
* @Title:模版方法测试类
* @Description:TODO
* @Company: Orclight's Studio
* @author: shuzl 2013-3-12 下午02:14:18
* @motto: Never put off what you can do today until Tomorrow
* @version 1.0.0
*/
public class TestTemplate {
public static void main(String[] args) {
AbstractTemplate temp = new TemplateImpl();
temp.execute();
}
}
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇对象按照某属性升序,降序 下一篇Spring AOP记录系统日志

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: