java模式笔记 (二)—— 对象原则
2013-02-08 09:22
141 查看
隐藏在设计模式后边的更一般的东西
最顶级的原则,也最抽象,是系统实现的目标。其他原则是它某一方面的具体化
抽象化是关键。
考虑什么会引起变化,而不需要重新设计系统
类型体系; Mixed接口模式;标示接口(如Seariable)
各自的优点:
抽象类可以有函数实现
类可以实现多个接口
接口和抽象类的结合:
缺省适配模式,Mixed Type: 接口、抽象类、多个具体的类
继承的使用:
子类是对超类的扩展,而不是修改或撤销超类的接口
抽象类定义接口,子类进行特定实现。
对于扩展的需要,不一定要使用继承
修改为A和B都继承于抽象类C
修改为B使用组合方式访问A
多个接口是集成关系,实现类实现所有的接口
2)如果需要修改,知道哪些用户会受到影响
一对多的关系只能使用组合表示
is a 是什么的一种;has a 具有什么的角色
尽量降低类的访问权限:对于top类的权限是default和public,尽量使用default
谨慎使用searializable:可能引起调用端使用不一致
尽量降低成员的访问权限:private default protected public
变量在使用的时候再定义
软件的要求
保持可维护性的基础上,提高复用,通过设计原则和设计模式来实现。开闭原则 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设计模式学习笔记--面向对象设计原则
- 【我的Java笔记】Java面向对象思想设计原则及常见设计模式
- 【JAVA设计模式-第一课】面向对象特性及原则回顾
- 黑马程序员--Java笔记04--面向对象 及单例设计模式
- C#面向对象设计模式纵横谈 学习笔记1 面向对象设计模式与原则
- [笔记]00面向对象设计模式与原则
- Java设计模式学习笔记---单一职责原则(一)
- C#面向对象设计模式纵横谈 笔记1. 面向对象设计模式与原则
- 面向对象设计与模式与原则--面向对象设计模式纵横谈讲座笔记之一
- 设计模式C++学习笔记之二十(完结篇 & 面向对象原则)设计模式C++实例下载
- JAVA与模式--设计原则笔记
- CSharp面向对象设计模式纵横谈--面向对象设计模式与原则 听课笔记
- 设计模式笔记 0.面向对象设计模式与原则
- 设计模式之禅笔记--面向对象设计六大原则之一
- Java学习笔记之设计模式原则
- Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式
- Java与模式阅读笔记(1)依赖倒转原则
- JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类
- 【学习笔记06】java面向对象-main方法、单例设计模式
- C#面向对象设计模式纵横谈(1):面向对象设计模式与原则 笔记