入门设计模式之模板

学习更多设计模式请参考:入门设计模式之汇总篇

模板方法:在一个抽象类中定义一部分的实现,其余的定义抽象方法迫使子类实现

相信看了上方的定义以后大家已经理解了模板模式,我们来看一下类图

抽象类定义了4个方法,其中operation是私有的,在这个方法里调用了其他三个方法,而方法3是自己实现的。方法1和2是强迫子类实现的。

ClassImpl1,ClassImpl2都继承了抽象类,并分别对方法1和2进行了不同的实现

我们来看代码

public  abstract class AbstractClass {
    public abstract void operation1();
    public abstract void operation2();
    public  void operation3(){
        System.out.println("do something....");
    }
    public  void operation(){
        operation1();
        operation2();
        operation3();
    }
}

public class ClassImpl1 extends AbstractClass {
    @Override
    public void operation1() {
        System.out.println("do something....");
    }
    @Override
    public void operation2() {
        System.out.println("do something....");
    }
}

public class ClassImpl2 extends AbstractClass {
    @Override
    public void operation1() {
        System.out.println("do something....");
    }
    @Override
    public void operation2() {
        System.out.println("do something....");
    }
}

原文地址:https://www.cnblogs.com/zhixiang-org-cn/p/9249000.html

时间: 2024-10-31 18:26:26

入门设计模式之模板的相关文章

Thinkphp入门三—框架模板、变量(47)

原文:Thinkphp入门三-框架模板.变量(47) [在控制器调用模板] display()   调用当前操作名称的模板 display(‘名字’)  调用指定名字的模板文件 控制器调用模板四种方式: [在控制器给模板传递变量] 在smarty里边给模板传递变量信息 $smarty -> assign(变量名称,值); 在tp框架里边同样适用assign()给模板传递变量信息 ThinkPHP的模板引擎的左右标记: ThinkPHP/Lib/ Behavior/ ParseTemplateBe

【设计模式】模板模式

引子 这是一个很简单的模式,却被非常广泛的使用. 之所以简单是因为在这个模式中仅仅使用到了继承关系. 继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子. “使用委派关系代替继承关系”, “尽量使用接口实现而不是抽象类继承”等等专家警告,让我们大家对继承“另眼相看”. 其实,继承还是有很多自身的优点所在.只是被大家滥用的似乎缺点更加明显了. 合理的利用继承关系,还是能对你的系统设计起到很好的作用的. 而模板方法模式就是其中的一个使用范例. 定义与结构 模板方法(Template Method)

设计模式之模板模式

模板模式是一个非常简单的行为类模式. 模板方法Gof的定义是:在一个方法里定义算法的骨架,将一些步骤延迟到其子类. 模板模式包含一个抽象的类和它的实现类,我们在抽象类中定义骨架,需要用到的方法都是抽象方法,具体的实现由它的子类来完成. eg: public abstract class Template{ public void printDate(){ // 显示排序后的List sort(list); } public List sort(List list); } public class

C++设计模式实现--模板(Template)模式

一. 问题 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的.Template提供了这种情况的一个实现框架. 二. 模式 Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节. 三. 代码 [cpp] view plaincopy //抽象基类,实现了一个模板方法 class AbstractClass { pu

入门设计模式之桥梁

学习更多设计模式请参考:入门设计模式之汇总篇 桥梁模式:将抽象化与实现化脱藕,使二者可以独立的变化 大家应该对日志记录比较熟悉,不知道有没有自己写过一个日志处理的程序,你又是如何实现的呢? 今天的桥梁模式就根据一下需求来分析一下: 支持2个以上平台 支持2个以上格式 大家可以看一下这个需求哈,2个以上,那我就实现2个呗,一般人可能都会这样想.然后开始写,比如Windows存Txt格式.Windows存Xml格式.Linux存Txt格式的.Linux存Xml格式的,刷刷刷分分钟的就写好了. 但是如

入门设计模式之观察者

学习更多设计模式请参考:入门设计模式之汇总篇 观察者模式:多个观察者对象同时观察一个主题对象,当这个主题对象发生变化时,会通知所有的观察者 来看一下下方类图 Subject:主题类,所有主题的父类,负责对观察者的管理,有添加观察者,删除观察者,通知所有的方法 SubjectImpl:主题子类,拥有状态属性,当状态改变时会调用父类的notifyObserver方法通知所有观察者 Observe:观察者,定义了接受主题变化通知的方法 ObserveImpl:观察者实现类,实现了update()方法用

入门设计模式之合成

学习更多设计模式请参考:入门设计模式之汇总篇 合成模式的职责是将对象组织到树结构中 观察上方类图: interface,一个接口定义了一个获得当前对象名字的方法 leaf:树中的叶子节点,实现了interface Branch:树枝节点,不仅实现了getName方法,同样它本身具有添加节点删除节点的方法且本身可以包含多个树枝节点以及叶子节点 通过上述结论我们可以发现其实合成模式就是树的结构的实现 来看一下代码: public interface Compent { public String g

入门设计模式之单例

学习更多设计模式请参考:入门设计模式之汇总篇 了解单例模式之前我们先来了解一下单例模式的三个要点: 1.一个类只能有一个实例(就是只需要new一次呗) 2.它必须自行创建这个实例(就是构造方法不对外暴露呗) 3.它必须向整个系统提供这个实例(就是获取实例的方法是静态的呗) 其实通过分析上方三个要点我们就已经了解了单例模式了.也就是说我们只要满足上方的要求就算是一个单例了. 按照上方的要点这里给出几个例子供大家参考一下: 饿汉式: public class HungrySingle { priva

入门设计模式之享元

学习更多设计模式请参考:入门设计模式之汇总篇 享元模式:以共享的方式高效的支持大量的细粒度对象 我们以咖啡为例,一家咖啡店一天卖出几千杯咖啡其实这几千杯也不过是几十种口味.在Java中你觉得是new几千次咖啡好还是new几十次口味好呢?享元模式就是利用的这个原理来共享的变量了. 来看一下类图: FlavorFactory:口味工厂,根据客户所需口味生产咖啡 Client:售货员,负责通知工厂生产咖啡,以及出售咖啡和统计销售情况 Coffee:咖啡接口 Flavor:咖啡口味,实现了咖啡接口,并且