zoukankan      html  css  js  c++  java
  • 设计模式之Template Method模式

    作用:将具体的处理交给子类

    什么是Template Method模式?

    Template Method模式是指带有模板功能的模式,组成模板的方法被定义在父类中,且这些方法为抽象方法。子类去实现父类中的抽象方法,即在子类种再进行对应的方法实现。

    所以在父类中定义所需的框架,子类中去实现对应的方法,这就是Template Method模式。

    UML类图:

    总体框架:display种首先open方法,再调用5次print方法,再调用close方法(open、print、close均为抽象方法)

    AbstractDisplay类:

    public abstract class AbstractDisplay
    {
        public abstract void open();
        public abstract void print();
        public abstract void close();
        public final void display()
        {
            open();
            
            for(int i=0;i<5;++i)
                print();
                
            close();
        }
    } 

    CharDisplay类:

    public class CharDisplay extends AbstractDisplay
    {
        private char ch;
        public CharDisplay(char ch)
        {
            this.ch = ch;
        }
        
        public void open()
        {
            System.out.print("<<");
        }
        
        public void print()
        {
            System.out.print(ch);
        }
        
        public void close()
        {
            System.out.print(">>");
        }
    }

    StringDisplay类:

    public class StringDisplay extends AbstractDisplay
    {
        private String string;
        privateint width;
        public StringDisplay(String string)
        {
            this.string = string;
            this.width = string.getBytes().length;
        }
        
        public void open()
        {
            printLine();
        }
        
        public void print()
        {
            System.out.print("|"+string+"|");
        }
        
        public void close()
        {
            printLine();
        }
        
        private void printLine()
        {
            System.out.print("+");
            
            for(int i=0;i<width;++i)
                System.out.print("-");
                
            System.out.println("+");
        }
    }

    Main类:

    public class Main(String[] argvs)
    {
        AbstractDisplay d1 = new CharDisplay('H');
        AbstractDisplay d2 = new StringDisplay("Hello World");
        
        d1.display();
        d2.display();
    }

    作用:基类提供了实现的大体流程,但是每一步细节仍需要子类自行去实现

  • 相关阅读:
    16进制数至字符串转换
    综合评价模型C++实现
    综合评价模型
    Eigen使用矩阵作为函数参数
    Eigen子矩阵操作
    Eigen矩阵基本运算
    c++矩阵运算库Eigen简介
    三次样条插值算法C++实现
    一个 图片 滚动 飞入的css特效
    在TTF字体中提取想要的文字
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/10791846.html
Copyright © 2011-2022 走看看