• 设计模式——模板方法模式


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

    /**
     * @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设计模式案例

    声明

    引用该文档请注明出处

  • 相关阅读:
    java代码中存在的Big Endian 和 Little Endian
    通过hbase实现日志的转存(MR AnalyserLogDataRunner和AnalyserLogDataMapper)
    hbase使用MapReduce操作1(基本增删改查)
    配置好Nginx后,通过flume收集日志到hdfs(记得生成本地log时,不要生成一个文件,)
    数据库分页查询
    将博客搬至CSDN
    Dev Winform本地化
    C#,OleDbType,Access 对应数据类型
    C#字符串转义和反转义
    C# 正则表达式
  • 原文地址:https://www.cnblogs.com/imaikce/p/10882227.html
Copyright © 2020-2023  润新知