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

    声明

    引用该文档请注明出处

  • 相关阅读:
    第5章 JDBC/ODBC服务器
    第4章 SparkSQL数据源
    第3章 SparkSQL解析
    第2章 执行SparkSQL查询
    第1章 Spark SQL概述
    Ubutun重启网卡
    Java面试通关要点汇总整理
    40道Java基础常见面试题及详细答案
    ListView
    数据库表及字段命名规范
  • 原文地址:https://www.cnblogs.com/imaikce/p/10882227.html
Copyright © 2011-2022 走看看