美文网首页
Template Pattern

Template Pattern

作者: 杨志聪 | 来源:发表于2024-06-10 10:15 被阅读0次

    解决的问题

    开发一个银行软件,有付款、转账等任务,要求在执行任务前,需要先记录日志。

    代码

    Logger:

    package com.cong.designpattern.template;
    
    public class Logger {
        public void log() {
            System.out.println("log");
        }
    }
    

    Task:

    package com.cong.designpattern.template;
    
    public abstract class Task {
        private Logger logger;
        public Task() {
            this.logger = new Logger();
        }
        public void execute() {
            this.logger.log();
            this.doExecute();
        }
        protected abstract void doExecute();
    }
    

    PayTask:

    package com.cong.designpattern.template;
    
    public class PayTask extends Task{
        @Override
        protected void doExecute() {
            System.out.println("Do pay task");
        }
    }
    

    TransferTask:

    package com.cong.designpattern.template;
    
    public class TransferTask extends Task{
        @Override
        protected void doExecute() {
            System.out.println("Do transfer task");
        }
    }
    

    Test Code:

    PayTask payTask = new PayTask();
    payTask.execute();
    
    TransferTask transferTask = new TransferTask();
    transferTask.execute();
    

    UML

    Template Pattern UML

    好处

    Task是一个“模板”(template),他的的子类通过继承这个“模板”实现不同的任务,而且可以保证这些任务都有相同的执行逻辑(执行任务前,先执行logger等)。

    相关文章

      网友评论

          本文标题:Template Pattern

          本文链接:https://www.haomeiwen.com/subject/qqpiqjtx.html