欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-14 15:29:18
模板方法模式就是在父(基)类定义模板(流程),而具体的处理环节交给子类来实现 附录 github.com/maikec/patt… 个人GitHub设计模式案例 声明 引用该文档请注明出处 ......

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

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

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

声明

引用该文档请注明出处