1.
单一职责原则
对一个类而言,就只有一个引起它变化的原因。承担的职责越多,被复用的可能性就越小。将不同的职责封装在不同的类中。
2.
开闭原则
一句话:对扩展开放,对修改关闭。
3.
里氏代换原则
所有引用的父类的地方能够透明的使用其子类的对象。
所以,尽量将一些需要扩展的/存在变化的类设计为抽象类或接口,作为父类。这样的话,如果需要对类的行为进行修改,可扩展新的子类。
4.
依赖倒转原则
针对接口编程,而不是针对实现编程。
尽量的引入抽象层,将具体的类写在配置文件中,改变时只需要对抽象层进行扩展,修改配置文件即可。不改其源代码,符合开闭原则 。
5.
接口隔离原则
一句话:各干其事、互相独立
6.合成复用原则
尽量多使用对象组合,少用继承。
一般,HAS-A用组合或聚合,IS-A再用继承。
7.迪米特法则
一句话:高内聚,松耦合
二、设计模式之 创建型模式
1.
简单工厂模式
系统根据所传入的参数来动态决定创建哪个产品实例。
缺点:被创建的父类会很累,使用频繁,一旦不能正常工作,整个工厂都会被影响。修改时也会违反开闭原则。
看下面这个例子,传入什么水果他就返回什么水果,当要的水果很多时,水果这个厂会很累的。
2.工厂方法模式
为了不让爸爸(父类)那么累,将类的实例化延迟到子类中完成,子类负责生产具体对象。如图:
缺点 :在添加新品时,需要编入新的具体产品并提供与之对应的工厂类,这样会增加类的个数,增加系统开销。
3.抽象工厂模式
再强化一点。
由孙子才造了苹果和葡萄。这样增加新的产品族很容易,只需要加一个新的工厂,但是要修改抽象接口和已有的具体工厂,这个特点被称为 开闭原则的倾斜性。它以一种倾斜的方式来增加新的产品。
4.建造者模式
一句话:一步一步创建一个复杂的对象。使同样的创建过程可以创建不同的表示。
就像玩游戏的时候造一个人物,先选脸,再选衣服,再选裤子。一个完整的人物就创建好啦。
5.原型模式
通过拷贝原型来创建新的对象。用于有一个对象要被频繁创建的场景,通过复制这个对象来创建出更多的同类型对象。
6.单例模式
(1)一个类只能有一个实例(通过把构造设为私有来实现)
(2)必须自行创建这个实例(有懒汉式单例和饿汉式单例,懒是在调用getInstance()时才创建,饿是在类加载时就创建好了)
(3)必须自行向整个系统提供这个实例
阅读(2051) | 评论(0) | 转发(0) |