java模式笔记 (二)—— 对象原则

隐藏在设计模式后边的更一般的东西

软件的要求

       保持可维护性的基础上,提高复用,通过设计原则和设计模式来实现。

开闭原则 OCP

       一个系统对扩展开放,对修改关闭: 在不修改原有的基础上进行扩展。

        最顶级的原则,也最抽象,是系统实现的目标。其他原则是它某一方面的具体化

实现思路

       对系统的抽象层不修改,扩展系统的实现层。

       抽象化是关键。

       考虑什么会引起变化,而不需要重新设计系统

抽象类和接口

接口的作用:

        类型体系; Mixed接口模式;标示接口(如Seariable)

各自的优点:

       抽象类可以有函数实现

       类可以实现多个接口

接口和抽象类的结合:

       缺省适配模式,Mixed Type: 接口、抽象类、多个具体的类

继承的使用:

       子类是对超类的扩展,而不是修改或撤销超类的接口

李氏代换原则

       使用抽象类的地方,可以使用子类来替换,换句话说抽象类类或接口定义的内容,子类必须支持,反过来不成立。

       抽象类定义接口,子类进行特定实现。

       对于扩展的需要,不一定要使用继承

实现思路

       两个具体类A和B间有继承关系,但A和B有接口略微不同

              修改为A和B都继承于抽象类C

              修改为B使用组合方式访问A

 

依赖倒转

       依赖于抽象类,而不是具体实现,对象设计的主要手段

接口隔离原则

       针对不同的情况,设定不同的接口,如一个service要为三个客户服务,而这三个客户需要的服务略微不同,应该为这三个客户端提供不同的java接口,每个接口仅仅将需要的服务暴露给客户端

实现思路

       准确而恰当地划分角色,并让每个角色对应一个接口

        多个接口是集成关系,实现类实现所有的接口

好处是

       1)不做过多的承诺;

       2)如果需要修改,知道哪些用户会受到影响

合成、聚合复用原则

       尽量使用组合,而不是继承

       一对多的关系只能使用组合表示

       is a 是什么的一种;has a 具有什么的角色

迪米特原则

       不要和陌生人说话,用于解耦

实现思路

       减少类的变化:尽量不提供set方法

       尽量降低类的访问权限:对于top类的权限是default和public,尽量使用default

       谨慎使用searializable:可能引起调用端使用不一致

       尽量降低成员的访问权限:private  default  protected public

       变量在使用的时候再定义

你可能感兴趣的:(java模式笔记 (二)—— 对象原则)