zoukankan      html  css  js  c++  java
  • 设计模式——模板方法模式

    模板方法模式就是在父(基)类定义模板(流程),而具体的处理环节交给子类来实现

    /**
     * @author maikec
     * @date 2019/5/10
     */
    public abstract class AbstractDisplay {
        private final Integer PRINT_COUNT =5;
        /**
         * 打开操作
         */
        protected abstract void open();
    
        /**
         * 打印操作
         */
        protected abstract void print();
    
        /**
         * 关闭操作
         */
        protected abstract void close();
         /**
         * 定义模板
         */
        public final void display(){
            open();
            for (int i = 0; i < PRINT_COUNT; i++) {
                print();
            }
            close();
        }
    }
    
    /**
     * @author maikec
     * @date 2019/5/10
     */
    public class CharDisplay extends AbstractDisplay {
        private final Character aChar;
        public CharDisplay(Character aChar){
            if (null == aChar){
                throw new IllegalArgumentException( "Character cannot be null" );
            }
            this.aChar = aChar;
        }
        @Override
        public void open() {
            System.out.println( "Open Char " );
        }
    
        @Override
        public void print() {
            System.out.println( aChar.charValue() );
        }
    
        @Override
        public void close() {
            System.out.println( "Close Char" );
        }
    }
    
    /**
     * @author maikec
     * @date 2019/5/10
     */
    public class StringDisplay extends AbstractDisplay {
        private final String string ;
        public StringDisplay(String string){
            if (null == string){
                throw new IllegalArgumentException( "String cannot be null" );
            }
            this.string = string;
        }
        @Override
        public void open() {
            System.out.println( "Open String" );
        }
    
        @Override
        public void print() {
            System.out.println( string );
        }
    
        @Override
        public void close() {
            System.out.println( "Close String" );
        }
    }
    
    /**
     * @author maikec
     * @date 2019/5/10
     */
    public class TemplateDemo {
        public static void main(String[] args) {
            AbstractDisplay display = new CharDisplay( '*' );
            display.display();
    
            AbstractDisplay stringDisplay = new StringDisplay( "Hi" );
            stringDisplay.display();
        }
    }

    附录

    github.com/maikec/patt… 个人GitHub设计模式案例

    声明

    引用该文档请注明出处

  • 相关阅读:
    几种基本样式,背景图,字体,下划线,行高垂直等
    网页主菜单,横向
    DOM操作
    递归的小例题
    学习两个星期后做的第一个网页
    Js的语法和循环
    JS
    75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。[2行核心代码]
    74 使用BitSet输出数组中的重复元素
    73 [面试题]交换一个整数的二进制表示的奇偶位(swapOddEvenBits)
  • 原文地址:https://www.cnblogs.com/imaikce/p/10882227.html
Copyright © 2011-2022 走看看