设计模式-模板方法

如果现在有一个电商网站,用户需要购买购买一件商品,我们需要在用户购买商品前做一些其他的事情,比如记录日志,进行性能统计,权限检查等等。按照面向对象的设计模式,应该把常用的方法抽出来在业务逻辑前后进行调用。这样虽然也可以完成逻辑,但是那些与日志,安全,事务,性能统计的相关代码快把真正的代码淹没了,不仅这个类需要这么干,其他的类也需要这么干,这样会导致重复代码特别多。所以前辈们想出了解决办法--“模板方法”设计模式来解决部分问题

public  abstract class BaseCommand {
    public void excute(){
        System.out.println("执行之前的动作");
        domain();
        System.out.println("执行之后的动作");
    }

    public abstract void domain();
}
public class PlaceOrderCommand extends BaseCommand {
    @Override
    public void domain() {
        System.out.println("下单");
    }
}
public class Client {
    public static void main(String[] args) {
        new PlaceOrderCommand().excute();
    }
}

在父类(BaseCommadn)中已经把那些乱七八糟的非业务逻辑性代码写好了,只留了一个抽象方法给子类去实现。

优点:子类变得更清爽,只需要关注业务逻辑

缺点:只能被迫接收超类定义好的,要执行哪些,按什么顺序,只能无条件接收。哪怕这个逻辑不需要某个功能也会强迫执行

不和别人一样,不复制只真正理解
原文地址:https://www.cnblogs.com/Vinlen/p/12759577.html