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

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

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

    不和别人一样,不复制只真正理解
  • 相关阅读:
    ajax 新闻栏目
    ajax 瀑布流实现
    html5 canvas图片渐变
    html5 canvas图片翻转
    html5 canvas图片反色
    ajax 第一个程序
    ajax 新闻栏目
    HDU 1756 Cupid's Arrow( 判断点在多边形的内外 )
    POJ 2356 Find a multiple( 鸽巢定理简单题 )
    HDU 5762 Teacher Bo ( 暴力 )
  • 原文地址:https://www.cnblogs.com/Vinlen/p/12759577.html
Copyright © 2011-2022 走看看