编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好 1)代码重用性(相同功能的代码,不用多次编写) 2)可读性(编程规范性,并与其他程序员的阅读和理解) 3)可扩展性(当需要增加新的功能时,非常的方便,可维护) 4)可靠性(当我们新增新的功能后,对原来的功能没有影响) 5)使程序呈现高内聚,低耦合的特性
设计模式原则其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据) 设计模式常用的七大原则有(六大原则一大法则):
1、单一职责原则(Single Responsibility Principe) 即一个类应该只负责一项职责。
2、里氏替换原则(Liskov Substitution Principle) 任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。 里氏代换原则是对“开-闭”原则的补充。实现“开闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。里氏替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它。
3、依赖倒转原则(Dependence Inversion Principle) 面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。
4、接口隔离原则(Interface Segregation Principle) 客户端不应该依赖它不需要的方法;一个类对另一个类的依赖应该建立在最小的接口上。
5、迪米特法则(最少知道原则)(Demeter Principle) 一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。 最少知道原则的另一个表达方式是:只与直接的朋友通信。类之间只要有耦合关系,就叫朋友关系。耦合分为依赖、关联、聚合、组合等。我们称出现为成员变量、方法参数、方法返回值中的类为直接朋友。局部变量、临时变量则不是直接的朋友。我们要求陌生的类不要作为局部变量出现在类中。
6、合成复用原则(Composite Reuse Principle) 尽量首先使用合成/聚合的方式,而不是使用继承。
总原则- 7、开闭原则 (Open Close Principle) 对扩展开放,对修改封闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。
设计模式- 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通 用解决方案,设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的 一段时间的试验和错误总结出来的。
- 设计模式的本质提高软件的维护性,通用性和扩展性,并降低软件的复杂度。
- 是经典的书,作者是Erich Gamma、Richard Helm、Ralph Johnson 和John Vlissides Design(俗 称“四人组GOF”)
- 设计模式并不局限于某种语言,java,php,c++ 都有设计模式.
设计模式分为三大类: 创建型模式,共五种:(简单工厂模式 是工厂方法模式的特例)工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。