【设计模式】原则与案例

基本设计原则

  单一职责(Single Responsibility Priciple):   

  开放封闭原则(Open-Closed Priciple):一个实体(类、函数、模块等)应该对外扩展开放,对内修改关闭

  里氏代替原则(Liskov SubsSubstition Priciple):子类必须替换掉它们的父类型。

  接口隔离原则(Interface Segregation Priciple):使用多个专门功能的接口,而不是使用单一的总接口。 

  依赖倒置原则(Dependence Inversion Priciple): 细节应该依赖于抽象,而抽象不应该依赖于细节 

  合成复用原则(Composite Reuse Priciple):在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分。

  迪米特法则(Law of Demter):一个模块或对象应尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立,这样当一个模块修改时,影响的模块就会越少,扩展起来更加容易。

 设计模式是什么

  设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并保证代码可靠性。

  设计模式的描述方式:

    名称:根据其功能或模式结构来命名;

    问题:应在何时使用模式,包含设计中存在的问题及问题存在的原因;

    解决方案:通常UML类图和核心代码描述,描述设计模式的组成部分,及各组成部分间相互关系、各自职责和协作方式;

    效果:描述模式优缺点及使用模式时应权衡的问题。

模式的分类 

  


具体设计模式案例

  • 策略模式样例: https://blog.csdn.net/Taobaojishu/article/details/109792558
  • 美团设计模式二三事: https://tech.meituan.com/2022/03/10/interesting-talk-about-design-patterns.html     策略模式、工厂模式、适配器模式、状态模式、观察者模式 、建造者模式、装饰器模式  
  • 设计模式在外卖营销业务中的实践  https://tech.meituan.com/2020/03/19/design-pattern-practice-in-marketing.html

 

设计模式最佳套路—— 愉快地使用策略模式
https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650412376&idx=1&sn=da835d9366fef6a903c8d17a4fb2e53e&chksm=8396dd40b4e154563f856a86ce6a3b240ed832ef509805d29da18e12f5b0cda786e3b76e21ff&scene=178&cur_album_id=1452661944472977409#rd

 

基于 Spring 实现管道模式的最佳实践
https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650413430&idx=1&sn=32c89ea3222d341bf3014854f69fd239&chksm=8396d16eb4e1587838f99a6859668a3588b0762155c1a13872d3f419efa3f75c5a532d7d38fe&scene=21#wechat_redirect

 

设计模式最佳套路3 —— 愉快地使用代理模式
https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650417780&idx=1&sn=a4076a47b2fc6800a8e10528a0ac1dd7&chksm=8396e26cb4e16b7a93828b1cef4eaedf1b3df8bbc9a9ddee2368d927c71369ffcf115fdddc0a&scene=21#wechat_redirect

 

设计模式最佳套路4 —— 愉快地使用模板模式
https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650425722&idx=1&sn=c08418f767ee4c70331d311776c53a89&chksm=83968162b4e10874eeb119ef807bd2670cab90f73f3ee13d7146a1f535937aa311bbe958643e&scene=178&cur_album_id=1452661944472977409#rd

 

设计模式最佳套路5 —— 愉快地使用工厂方法模式
https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650432631&idx=1&sn=fd90b80b2fe566b6f04a67fc18f156aa&chksm=8396ac6fb4e125799c6b2329fdb67727e1da3949a4c2f4a879e80f1d83591fcea2744b76f124&scene=178&cur_album_id=1452661944472977409#rd

 


 单例模式:参考seata源码中 EventBusManager,基于内部静态类

public class EventBusManager {
    private static class SingletonHolder {
        private static EventBus INSTANCE = new GuavaEventBus("tc",true);
    }

    public static EventBus get() {
        return SingletonHolder.INSTANCE;
    }
}

 

posted @ 2018-08-19 15:46  飞翔在天  阅读(169)  评论(0编辑  收藏  举报