• 设计模式-模板方法


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

    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)中已经把那些乱七八糟的非业务逻辑性代码写好了,只留了一个抽象方法给子类去实现。

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

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

    不和别人一样,不复制只真正理解
  • 相关阅读:
    Codevs 2602 最短路径问题
    NOIp2015酱油酱油记
    51Nod-1091 线段的重叠
    poj-3264-Balanced Lineup
    51Nod-1212 无向图最小生成树
    51Nod-1279 扔盘子
    51Nod--1010 只包含235的数
    51Nod--1015 水仙花数
    51Nod-1136 欧拉函数
    使用caffe训练自己的CNN
  • 原文地址:https://www.cnblogs.com/Vinlen/p/12759577.html
Copyright © 2020-2023  润新知