一、设计模式的目的
软件工程追求低耦合和高内聚,设计模式可以让程序编写具有更好的
(1)重用性
(2)可读性
(3)可扩展性
(4)健壮性
二、七大原则
设计模式是面向对象编程的精髓展示。
原则是各种设计模式需要遵循的基础和规范。
-
单一职责原则
每个类应该只负责一项职责,而不能承担无限职责。
单一职责能够降低类的复杂度,提高类的可读性和可维护性。 -
开闭原则
开闭原则是最基础、最重要的设计原则。
程序设计应该对修改关闭,对扩展开放;抽象出框架,实现扩展细节。
当软件行为需要变化时,尽量通过扩展软件行为完成,而不是通过修改现有代码逻辑。 -
接口隔离原则
一个类对另一个类的依赖应建立在最小接口上。 -
依赖倒转原则
依赖倒转的核心思想是面向接口编程。
该原则的设计理念在于:相对于具体实现的多变性,抽象的东西要稳定的多。
高层模块不应该依赖低层模块,二者都应该依赖其抽象。
抽象不依赖细节,细节依赖于抽象。
使用接口或抽象类的目的在于指定规范,而不涉及具体细节。 -
里氏替换原则
子类可以扩展父类的功能,但不能改变父类原有的功能。
里氏替换原则是实现开闭原则的重要方式之一,由于使用父类对象的地方都可以使用子类,因此程序中应尽量使用父类类型来对对象进行定义,而在运行时再确定子类类型,再用子类对象来替换父类对象。
继承使得两个类的耦合度增加,可以通过聚合、组合、依赖来解决。里氏替换原则包含的内在含义:
(1)子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
(2)子类中可以增加自己特有的方法,
(3)当子类重写父类方法时,方法的形参要比父类方法的入参更宽松。 -
迪米特原则
迪米特原则又叫最少知道原则。
一个类应该对其他类保持最少的了解,最少的联系;如果发生联系,应该通过依赖类的公用接口来调用,被依赖类只在内部实现复杂逻辑,对外提供公共访问接口。 -
合成复用原则
尽量使用聚合、合成的方式,而不是继承。
找出程序出需要经常变化的部分,并将他们抽象出来,动静分离。
针对接口编程,而不针对具体实现。
保持对象之间的松耦合设计。