0

设计模式-总览

 2 years ago
source link: https://www.hi-roy.com/posts/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E6%80%BB%E8%A7%88/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

设计模式-总览

2019-10-08

很久很久以前,忘记从哪看到一句话——设计模式是对编程语言缺陷的弥补。

年轻的我并没意识到这句话背后的真实含义以及所处语境,外加之后主要开发语言是Python这个动态语言,设计模式真的没怎么用到——比如装饰模式不就是Python中的装饰器嘛,一个语法糖能解决的事居然还弄出个模式来?

直到我开始学习openstack的源码,发现里面用到了大量的设计模式,才明白自己是多么无知可笑。

这里借用一位大佬的话:

如果你觉得设计模式在某程度上没用,说明两个问题:
1.你的系统还不足以复杂到要用设计模式的程度
2.你的经验还没强到能熟练应用设计模式的程度。

能找到这篇文章的,应该都知道面向过程、面向对象、封装继承多态、高内聚低耦合(包含程序级别以及架构级别)、开闭原则(对扩展开放、对修改关闭)、依赖倒置原则(尽量使用抽象类型作为对象实例变量类型,用于实现开闭原则)、单一责任原则(一个模块只负责一个功能)等一堆的名词,以及“组合优于继承”(这里略有争议,我个人对此赞同,最近看一些继承过多的代码总是要向上找好几层父类,还要仔细看子类中有没有重写父类方法,术语叫做类膨胀)。

设计模式(Design Pattern)简单说就是经验的总结,大佬们将其分为了23种。

通过使用设计模式来提高软件质量,降低开发人员之间的沟通成本。

先学基础,知道每种设计模式的优缺点以及应用场景,然后灵活应用。

《软件秘籍——设计模式那点事》这本书将设计模式分为了三类:

  1. 创建型
    • 工厂方法模式(Factory Method Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
    • 建造者模式(Builder Pattern)
    • 原型模式(Prototype Pattern)
    • 单例模式(Singleton Pattern)
  2. 结构型
    • 适配器模式(Adapter Pattern)
    • 桥接模式(Bridge Pattern)
    • 组合模式(Composite Pattern)
    • 装饰器模式(Decorator Pattern)
    • 外观模式(Facade Pattern)
    • 享元模式(Flyweight Pattern)
    • 代理模式(Proxy Pattern)
  3. 行为型
    • 责任链模式(Chain of Responsibility Pattern)
    • 命令模式(Command Pattern)
    • 解释器模式(Interpreter Pattern)
    • 迭代器模式(Iterator Pattern)
    • 中介者模式(Mediator Pattern)
    • 备忘录模式(Memento Pattern)
    • 观察者模式(Observer Pattern)
    • 状态模式(State Pattern)
    • 策略模式(Strategy Pattern)
    • 模板方法模式(Template Method Pattern)
    • 访问者模式(Visitor Pattern)

学习设计模式不是目的,真正的目的是学习这种思想,并在实践中应用,学会归纳和总结。

另外这本书是一本被书名耽误了的书,我个人是以这本书为主要脉络,结合《大话设计模式》来进行复习,有兴趣的小伙伴可以翻翻这2本书。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK