zoukankan      html  css  js  c++  java
  • Template

    在父类中定义处理流程的框架,在子类中实现具体处理

    /**
     * 抽象类
     * 负责实现模版方法,声明在模版方法中所使用到的抽象方法
     */
    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();
        }
    }
    
    public class CharDisplay extends AbstractDisplay{
        private char ch;//要显示的字符
    
        public CharDisplay(char ch) {
            this.ch = ch;
        }
    
        @Override
        public void open() {
            System.out.print("<<");
        }
    
        @Override
        public void print() {
            System.out.print(ch);
        }
    
        @Override
        public void close() {
            System.out.println(">>");
        }
    }
    
    public class StringDisplay extends AbstractDisplay{
        private String string;//要显示的字符串
        private int width;//以字节为单位计算的字符串的长度
    
        public StringDisplay(String string) {
            this.string = string;
            this.width = string.getBytes().length;
        }
    
        @Override
        public void open() {
            printLine();
        }
    
        @Override
        public void print() {
            System.out.println("|"+string+"|");
        }
    
        @Override
        public void close() {
            printLine();
        }
        private void printLine() {
            System.out.print("+");
            for (int i = 0; i < width; i++) {
                System.out.print("-");
            }
            System.out.println("+");
        }
    }
    
    public class Main {
        public static void main(String[] args){
            AbstractDisplay d1 = new CharDisplay('H');
            AbstractDisplay d2 = new StringDisplay("Hello,world");
            AbstractDisplay d3 = new StringDisplay("你好,世界");
            d1.display();
            d2.display();
            d3.display();
        }
    }
    

    在抽象类中可以实现一部分方法,但在接口中是无法实现方法的,因此在TemplateMethod模式中,无法用接口代替抽象类

  • 相关阅读:
    HDU 1051 Wooden Sticks (贪心)
    PHP中递归函数的一个常见逻辑问题
    【Android界面实现】使用Canvas对象实现“刮刮乐”效果
    vue2.0
    vuex3
    nodejs中require的路径是一个文件夹时发生了什么
    vue2
    vuex
    echarts
    node21---mongoose
  • 原文地址:https://www.cnblogs.com/fly-book/p/12453657.html
Copyright © 2011-2022 走看看