Java 模式的设计原则

 软件的可维护性与可复用性

可扩展性: 新的性能可以很容易的加入到系统中去。

灵活性:可以允许代码修改平稳的发生,而不会波入到很多的其他的模块。

可插入性:可以很容易的将一个类抽出去,同时将另一个有同样接口的类加入进来。

单一职责原则:

一个类,只有一个引起它变化的原因。应当只有一个职责。每个职责都是变化的轴线。如果一个类有一个以上的职责,这些职责就耦合在一起了。这是脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。

1.开闭原则-Open Close Principle

一个软件实体应当对扩展开放,对修改半闭。

如何实现开闭原则:抽象化是关键(接口和抽像类)。可以扩展,同时关闭修改。

2.里氏代换原则-Liskov Substitution Principle

一个软件实体如果使用的是一个基类的话,那么一定适用于其它子类,而且它根本不能察觉出基类对象和子类对象的的区别。反过来的代换是不成立的,即如果一个软件实体使用的是子类的话,那么它不一定适用于基类。

如: 基类: A, 子类为A1   代码中:public A = A1 成立;public A1 = A 不成立

里氏代换原则的关键是继承。

3.依赖倒转原则- Dependence Inversion Principle

依赖到转原则要求客户端依赖于抽象耦合。

抽象不应依赖于细节,细节应当依赖于抽象。另一种表述:要针对接口编程,不要针对实现编程。

4.接口隔离原则-Interface Segregation Principle

使用多个隔离的接口,比使用单个接口要好。即将低类之间的藕合度。

单一接口总比总接口好。

接口分类。

5.合成聚合复用原刚-Composite Reuse Principle

在一新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目地。简言之,尽量使用组合/聚合关系,少用继承。

合成、聚合复用原则就是在一个新的对象里面使用已有的对象,使之成为新对象的一部分。新的对象通过这些对象的委派达到复用已有功能的目的。

合成和聚合均是关联的特殊种类。 聚合用来表示“拥有”关系,或者整体与部分关系。合成则用来表示一种强的多的“拥有”关系。

在合成关系里面,部分和整体的生命周期是一样的。一个合成的新对象完全拥有对其组成部分的支配权。

6.迪米特原则-最少知道原则-Dimeter Principle

一个对象应对其他对象有尽可能少的理解。

狭义的迪米特法测-如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个,需要调用另一个的话,可以通过第三者转发这个调用。

接口与抽象的区别:

1)Java抽象类可以提供某些方法的部分实现,而Java接口不可以。

2)一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处抽象类所定义的继承的等级结构中,而由于Java语言限止一个类只能从最多一个超类继承。反过来看接口,就会发现一个实现一个JAVA接口所规定的方法的类都可可具有这个接口的类型,而一个类可以实现任意多个接口。

3)从重构角度看,将一个单独的Java具体类重构成一个Java接口的实现是容易的;但从具体类到抽象类就不是那么容易的。因为这个类可能已经有一个超类了。

4)Java接口是定义混合类型的理想工具。 混合类型,就是在一个类的主类型之外的次要类型。

联合使用Java接口和Java抽象类

Java插拔式设计 java 可插拔 模块 设计_Java插拔式设计


Java插拔式设计 java 可插拔 模块 设计_Java_02