0%

设计模式( Design pattern )

摘要:理解面向对象编程的最佳实践(施工中……)

概念

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

设计模式玄不玄

设计模式⽞吗?我觉得它⽞,也不⽞!怎么讲呢?《孙⼦兵法》⽞不⽞?也⽞!因为芸芸众⽣中能看懂、悟透的⼈很少,能真正灵活应⽤的⼈更少!⽽且战争的成败受众多因素的影响,如天时、地利、⼈和。但你要问中国历代名将中有哪个不读《孙⼦兵法》的?⼏乎没有,如三国的曹操、南宋的岳飞、明代的戚继光,这些⼈可谓把兵法⽤得出神⼊化了。两千多年来世界上其他没看过《孙⼦兵法》的国家是怎么打仗的?照样打。没学过兵法的⼈就不会使⽤⾥⾯的计策吗?当然会⽤,⽽且经常⽤。⽐如“借⼑杀⼈”,相信这个计策⼈们在耍⼩聪明的时候都⽤过;⽽“打草惊蛇”这个计策估计连⼩孩都会⽤。这样的例⼦还有很多,只是你不知道古代已经有⼈把它总结成“战争模式”了。所以说《孙⼦兵法》其实也不⽞。

同样的道理,“设计模式”是⼀套被反复使⽤的、被多数⼈知晓的、被⽆数⼯程师实践的代码设计经验的总结。因为它⽐较抽象,没有⼀定的编程经验很难读懂,更不能理解其精髓,所以很多⼈觉得它⽞。

——《人人都懂设计模式》

设计模式的类型

序号 模式 & 描述 包括
1 创建型模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)
2 结构型模式
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria 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) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern)

原则

单一职责

开放封闭

里氏替换

依赖倒置

接口隔离