zoukankan      html  css  js  c++  java
  • 设计模式-模板方法

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

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

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

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

    不和别人一样,不复制只真正理解
  • 相关阅读:
    springboot mybatis 后台框架平台 集成代码生成器 shiro 权限
    java二维码工具类,中间带LOGO的,很强大
    Itween 动画插件中 的画线
    对象池的简单使用
    DoTween 动画插件简单示例
    快速排序 and 拉格朗日插值查找
    简单工厂模式
    Java集合框架学习
    幂等性学习
    实战重构工厂模式
  • 原文地址:https://www.cnblogs.com/Vinlen/p/12759577.html
Copyright © 2011-2022 走看看