面向对象的设计原则 :: 风之谷

来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=140202 存档链接: https://web.archive.org/web/20041119134208id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=140202


风之谷 有关ACE/TAO,还有CORBA的学习资料 <<<同步调用与异步调用 | 首页 | JAWS2 分析报告 IV>>> 面向对象的设计原则 时间:2004-04-14 面向对象设计原则 开-闭原则 (OCP Open Close Principle) 接口与实现的考虑 Software entities should be open for extension, but closed for modification. 里氏代换原则 (LSP Liskov Substitution Principle) 继承复用的基石 一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且根本步能察觉出基类对象和子类对象的区别。 依赖倒置原则 (DIP Dependency Inversion Principle) 抽象层次依赖于具体层次 传统的过程行系统的设计方法倾向于使高层次的模块依赖于低层次的模块,抽象层次依赖于具体层次 Program to an interface, not an implementation 复用和维护的关系 倒转是指的复用的重点在于抽象层次上, 维护 则是将重点集中在具体层次上 在面向对象系统中,两个类之间耦合关系 零耦合 (Nil Coupling)关系: 如果两个类没有耦合关系,就称为零耦合。 具体耦合(Concrete Coupling)关系: 具体耦合发生在两个具体的(可实例化的)类之间,经由一个类对另一个具体类的直接引用造成。 抽象耦合(Abstract Coupling)关系: 抽象耦合关系发生在一个具体类和一个抽象类之间,使两个必须发生关系的类自己存有最大的灵活性。 上面的原则是模式的一个基础 接口隔离原则 (ISP Interface Segregation Principle) 使用多个专门的接口比使用一个单一的总接口要好。 合成/聚合复用原则 (CARP Composite/Aggregate Reuse Principle) 要尽量使用合成/聚合,尽量不要使用继承。 继承复用的缺点 继承复用破坏包装,是透明的复用。 如果超类的实现发生改变,那么子类的实现也不得不发生变化。 从超类继承而来的实现是静态的,不可能在运行时间内发生改变 迪米特法则 (LoD Law of Demeter | Least Knowledge Principle) 一个对象应当对其他对象有尽可能少的了解。 部分载至 阎宏 《Java与模式》 jnn 发表于 2004-04-14 22:23 引用Trackback(0) | 编辑 评论 对这些原则论述得最透彻,最详细的,还数Robert C. Martion,在他的网站www.objectmemter.com上,有十多篇文章,分别描述每个原则。在新著《敏捷软件开发》中,也囊括了一部分。合成/聚合复用原则他那里倒是没有,不过我觉得这只算实现技巧,不算原则。 Merlin Ran ( merlinran.blogone.net ) 发表于 2004-05-19 09:03 发表评论 最后更新 ACE Tutorial [翻译] 05 -page05 ACE Tutorial [翻译] 05 -page04 ACE Tutorial [翻译] 05 -page03 ACE Tutorial [翻译] 05 -page02 ACE Tutorial [翻译] 05 -page01 ACE Tutorial [翻译] 04 ACE Tutorial [翻译] 03 ACE Tutorial [翻译] 02-page03 ACE Tutorial [翻译] 02-page02 ACE Tutorial [翻译] 02-page01