码迷,mamicode.com
首页 > 其他好文 > 详细

[学习笔记]面向对象开发中的一些思想和原则

时间:2014-05-12 11:24:27      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:style   java   c   ext   color   int   

摘自《Java与模式》作者阎宏
 
面向对象的可复用设计的第一块基石:开闭原则(一个软件实体应当对扩展开放,对修改关闭)
 
“开-闭”原则的手段和工具:
1)里氏代换原则:任何基类出现的地方,子类一定可以出现;
2)依赖倒转原则:要依赖于抽象,不要依赖于实现;
3)合成\聚合复用原则:要尽量使用合成\聚合,而不是继承关系达到复用的目的;
4)迪米特法则:一个软件实体应该与尽可能少的其它实体发生相互作用;
5)接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口;
 
接口常见用法:
接口的思想:"封转隔离"。--对被隔离体的职责的封装,外部调用和内部实现的隔离。
1)单方法接口
    例如 Runnable接口只有一个run()方法,ActionListenser只有一个actionPerformed()
2)标识接口
    没有任何方法和属性的接口,仅仅表明实现它的类属于一个特定的类型。例如Serializable
3)常量接口 -- 不推荐使用
    用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量
 
抽象类的设计思想:
1)针对抽象编程  --  依赖倒转原则
2)正确使用继承 -- 继承的两种实现:接口继承 & 实现继承。避免滥用
3)模版方法模式  --  关于继承的模式
几乎所有的模式都涉及到抽象类。
 
依赖倒转原则:
· 三种耦合关系:
在面向对象的系统里,两个类之间可以发生三种不同的耦合关系:
1)零耦合关系:两个类没有耦合关系;
2)具体耦合关系:发生在两个具体(可实例化的)的类之间,经由一个类对另一个具体类的直接引用造成;
3)抽象耦合关系:发生在一个具体类和一个抽象类(或接口)之间,使两个必须发生关系的类之间存在最大的类灵活性。
 
抽象耦合关系要求客户端依赖于抽象耦合。
抽象不应当依赖于细节;细节应当依赖于抽象。
要针对接口编程,不要针对实现编程。
 
接口隔离原则:
使用多个专门的接口比使用单一的总接口要好。
从一个客户类的角度讲:一个类对另一类的依赖性应当是建立在最小的接口上的。
 
“接口”往往指两种不同的东西:
1)有严格定义的interface结构;--定制服务-->适配器模式。
2)一个类型所具有的方法特征的集合,是一种逻辑上的抽象。--一个接口应当简单的代表一种角色,而不是多个角色。
 
过于臃肿的接口是对接口的污染。--要准确而恰当的划分角色以及角色所对应的接口。
 
合成/聚合复用原则:
在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。
合成:用来表示一种强得多的“拥有”关系;多重性不超过1
聚合:用来表示“拥有”关系或者整体与部分的关系;
 
复用的基本种类:
1)合成/聚合复用
2)继承复用:类的实现继承(通过扩展一个已有对象的实现来扩展功能)
    优点:①新的实现较为容易;②修改或扩展继承而来的实现较为容易;
    缺点:①白箱复用:超类的实现细节被暴露给子类;②超类改变时,子类需改变子类以适应这种变化;③从超类继承来的实现是静态的,不可能在运行时间内发生变化,因此没有足够的灵活性。
 
“Is-A”与“Has-A”
   Is-A:一个类是另一类的一种;--里氏代换原则
Has-A:一个类是另一类的一种角色;
 
JavaAPI中的反例:Vector<--Stack   HashTable<--Properties
 
迪米特法则:
又叫最少知识法则,一个对象应当对其他对象有尽可能少的了解。
 
====================================================================================
 
1)创建模式 7
简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、多例模式、建造模式、原始模型模式
2)结构模式 8
适配器模式、缺省适配模式、合成模式、装饰模式、代理模式、享元模式、门面模式、桥梁模式
3)行为模式 12
不变模式、策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、解释器模式、调停者模式
 

[学习笔记]面向对象开发中的一些思想和原则,布布扣,bubuko.com

[学习笔记]面向对象开发中的一些思想和原则

标签:style   java   c   ext   color   int   

原文地址:http://www.cnblogs.com/letica/p/3720360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!