行为型设计模式之模板方法(TEMPLATE METHOD)模式 ,策略(Strategy )模式
1 模板方法(TEMPLATE METHOD)模式:
1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
2)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。

public abstract class Car {
public abstract void makeHead();
public abstract void makeBody();
public void makeCar(){
this.makeHead();
this.makeBody();
}
}
具体类:
public class Bus extends Car {
@Override
public void makeHead() {
System.out.println("产生bus车头");
}
@Override
public void makeBody() {
System.out.println("产生bus车身");
}
}
测试:
public class Test {
public static void main(String[] args) {
Car car = new Jeep();
car.makeCar();
}
}

package ooad.design.Strategy;
/**
* 报价接口
* @author hellokitty燕
*
*/
public interface Quoteprice {
public double quoteprice(double price);
}
package ooad.design.Strategy;
public class Content {
private Quoteprice quoteprice;
public Content(Quoteprice quoteprice) {
super();
this.quoteprice = quoteprice;
}
/**
* 折扣
* @param price
* @return
*/
public double discounting(double price){
return quoteprice.quoteprice(price);
}
}
package ooad.design.Strategy;
/**
* 新用户
* @author hellokitty燕
*
*/
public class NewUser implements Quoteprice{ @Override
public double quoteprice(double price) {
if(price>10000){
return price*0.95;
} return price;
} }
测试类:
package ooad.design.Strategy;
public class Test {
public static void main(String[] args) {
Quoteprice q=new NewUser();
Content c=new Content(q);
double ne= q.quoteprice(20000);
System.out.println(ne);
}
}
行为型设计模式之模板方法(TEMPLATE METHOD)模式 ,策略(Strategy )模式的更多相关文章
- 行为型设计模式之模板方法(Template Method)
结构 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 适用性 一次性 ...
- 宋宝华:Linux设备驱动框架里的设计模式之——模板方法(Template Method)
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前言 <设计模式>这本经典 ...
- 设计模式二--模板方法Template method
模式分类: 书籍推荐:重构-改善既有代码的设计 重构获得模式 设计模式:现代软件设计的特征是"需求的频繁变化".设计模式的要点是 "寻找变化点,然后在变化点处应用设计模式 ...
- 设计模式之---模板方法template method的使用
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的.Template Method ...
- 设计模式之模板方法(Template Method)
在整理模板方法之前,先来说点废话吧.除了记录学习总结,也来记录一下生活吧. 我们公司的老板在北京,老板也会因为项目来公司,不过不是天天来.公司有个同事,只要老板不在就天天迟到,而且一天比一天晚,经常来 ...
- 设计模式六: 模板方法(Template Method)
简介 模板方法属于行为型模式的一种. 实现层面上, 在抽象类中定义了算法或流程的骨架, 将其中易变的部分延迟到子类实现, 也就是允许它的子类实现其中的某些步骤. 模板方法适用于算法不变, 但算法中某些 ...
- Java设计模式之 — 模板方法(Template Method)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作. 项目经理告 ...
- 一天一个设计模式——模板方法(Template Method)模式
一.模式说明 现实世界中的模板是用于将事物的结构规律予以固定化.标准化的成果,它体现了结构形式的标准化.例如镂空文字印刷的模板,通过某个模板印刷出来的文字字体大小都是一模一样,但是具体使用什么材质的颜 ...
- Template Method模式和Strategy模式有何异同
Template Method模式和Strategy模式有何异同 博客分类: 设计模式 Java Template Method模式很容易理解,就是由基类提供一个模板,将各子类中不变的行为提取到基类 ...
随机推荐
- jQuery插件初级练习1答案
html: <script> $(".btn").click(function(){ $.color($("#box"),"blue&qu ...
- 用户访问网页流程、DNS 解析流程
一.用户访问流程 二.DNS解析流程 DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于 TCP/IP 网络,它所提供的 ...
- Linux的1000个命令
目录 Linux常用命令 uptime wget uname free who last history pwd cd ls cat head tail tr wc cut diff touch mk ...
- 文本属性和字体属性,超链接导航栏案例 background
文本属性 介绍几个常用的. 文本对齐 text-align 属性规定元素中的文本的水平对齐方式. 属性值:none | center | left | right | justify 文本颜色 col ...
- soap注入某sql2008服务器结合msf进行提权
原文作者:陈小兵 在实际成功渗透过程中,漏洞的利用都是多个技术的融合,最新技术的实践,本次渗透利用sqlmap来确认注入点,通过sqlmap来获取webshell,结合msf来进行ms16-075的提 ...
- 跟着刚哥学Redis
NoSQL 简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".是对不同于传统的关系型数据库的数据库管理系统的统称.它泛指非关系型的数据库.随着 ...
- @JsonInclude、@JsonFormat、@DateTimeFormat注解的使用
@JsonInclude(value=Include.NON_NULL) :用在实体类的方法类的头上 作用是实体类的参数查询到的为null的不显示 @DateTimeFormat:用于接收 前端传的 ...
- Linux - APT包管理
dpkg与apt dpkg用来安装本地deb格式软件包,但不会解决软件包的依赖关系. APT(Advanced Packaging Tool)是从更新源获取并安装软件包,而且会解决依赖关系, 但不会安 ...
- windows下的redis集群搭建的艰辛历程
我是参照这两篇教程进行的操作: 1.https://www.cnblogs.com/weiqinl/p/6490372.html (主) 2.https://blog.csdn.net/qiu ...
- flask的变量和函数
flask 中有内置的的变量函数 ,那些特殊的变量可以实现某些功能 config :可以从模板中直接访问Flask当前的config对象:{{config.SQLALCHEMY_DATABASE_UR ...