Head First中的设计原则总结:
一、封装变化
二、多用组合,少用继承
三、针对接口编程,不针对实现编程
四、为交互对象之间的松耦合设计而努力
五、类应该对扩展开放,对修改关闭
六、依赖抽象,不要依赖具体类
七、只和朋友交谈
八、别找我,我会找你
九、类应该只有一个改变的理由
开-闭原则(open-closed principle或OCP)
所谓开-闭原则:就是在设计模块时,应当使这个模块可以在不被修改的前提下被扩展,也就是说对扩展开放,对修改关闭
那么如何实现开-闭原则呢?
方法是:
1、抽象,在JAVA里以接口或者是抽象类实现
2、对可变性进行封装,也就是说将散落在各个角落的可变的代码封装到一个对象里,然后使用继承来实现同一种可变性的不同表象,继承应当被看成是封装变化的方法,而不应当被认为是从一般对象生成特殊对象的方法,其次,一种可变性不应当与另一种可变性混合在一起,一般继承结构不宜超过两层
里氏代换原则(Liskov substitution principle 或LSP)
所谓里氏代换原则是:任何基类出现的地方,子类一定可以出现。该原则是开闭原则的补充,实现开闭原则的关键步骤是抽象化。而基类与子类的继承关系就是抽象化的具体体现,所以里氏代换原则是实现对抽象化的具体步骤的规范,一般来说,违反里氏代换原则,一定违反开闭原则,反之,不成立
依赖倒转原则(Dependency Inversion principle或DIP)
简单地讲所谓依赖倒转原则就是针对接口编程,而不是针对实现编程。
这里讲一下面向对象中两个类发生的三种不同的耦合关系:
l 零耦合:就是两个类没有耦合关系
l 具体耦合:就是发生在两个具体类之间,经由一个类对另一个类的直接引用造成的
l 抽象耦合:就是一个具体类和一个抽象类之间的关系
接口隔离原则(Interface Segregation Principle或ISP)
前面讲了依赖倒转原则是针对接口编程,在针对接口编程时,需要注意的是使用多个专门的接口比使用一个单一的大接口要好。如何理解呢?
比如,把人早上睡醒后的一系列动作设计为一个大接口的话,该接口可能包含叠被子、刷牙、洗脸、洗澡、上厕所,吃早饭这些方法,那么这一接口被一动物继承是否合适呢?我认为不太合适,因为动物可能不需要叠被子、刷牙、洗脸,而只需要上厕所,吃早饭。如果动物继承了这一个大接口,那么就不得不实现叠被子、刷牙、洗脸成空方法。那么是否可以将叠被子、刷牙、洗脸设计为一接口,把叠被子、刷牙、洗脸设计为另一接口呢?这就是接口隔离原则
合成/聚合复用原则(Composition/Aggregation Principle或CARP)
合成/聚合复用原则简单地讲就是要尽量使用合成/聚合,尽量不使用继承
迪米特法则(Law of Demeter或LoD)
所谓迪米特法则就是
l 只与你直接的朋友通信
l 不要与陌生人说话
l 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与单位密切相关的软件单位
分享到:
相关推荐
面向对象设计模式是软件工程领域一个非常重要的主题,它不仅涉及如何组织代码、构建系统,还关乎如何确保软件系统的灵活性、可扩展性和可维护性。本文将深入探讨面向对象设计中的核心原则,并通过具体示例来阐述这些...
java 设计模式 设计原则 详细 对提高开发能力非常有帮助
接下来,我们要讨论的设计原则是设计模式的灵魂。这些原则包括: 1. **开闭原则**:软件实体(类、模块、函数等)应对外部扩展开放,对内部修改关闭。这意味着我们可以增加新功能而不破坏现有代码。 2. **里氏替换...
### Java常用设计模式、设计原则及其应用场景介绍 #### 一、设计模式概述 设计模式是一种在软件工程领域中被广泛采用的概念,它是一系列解决特定问题的通用解决方案的集合。这些解决方案通常来源于软件开发人员的...
JAVA的六大设计原则是对设计模式应用的指导,是使软件更加灵活、易于维护和复用的基础。这六大设计原则包括: 1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因,即...
24种设计模式介绍与6大设计原则24种设计模式介绍与6大设计原则
面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则
1. **设计原则**:面向对象设计模式的基础,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则指导我们编写可维护、可扩展的代码。 2. **常见设计模式*...
设计模式原则:单一职责原则,里氏替换,依赖倒转,接口隔离,开放关闭等等。
这个PDF文档“24种设计模式介绍与6大设计原则”旨在帮助开发者理解和应用这些模式,提高代码的可维护性和可扩展性。以下是其中的主要内容: 一、设计原则 1. 单一职责原则:一个类或模块应只有一个引起其变化的原因...
设计模式是软件开发中的一种最佳实践,它基于一套核心原则来指导我们编写可维护、可扩展的代码。在这篇文章中,我们将深入探讨设计模式的六大原则,这些原则是理解并有效应用设计模式的基础。 首先,我们要了解“开...
本文件《设计模式与设计原则.pdf》中,将详细地探讨设计模式以及与之相关的六大设计原则。 首先,设计模式主要分为三类: 1. 创建型模式(Creational patterns):这些模式提供了一种在创建对象的同时隐藏创建逻辑...
在Android开发中,设计模式和设计原则是提升代码质量、可维护性和可扩展性的重要工具。以下是关于"Android 24种设计模式介绍与6大设计原则"的详细阐述: 一、六大设计原则 1. **单一职责原则(Single ...
在“经验篇”中,作者分享了自己在设计模式和软件开发方面的经验和看法,包括设计原则、项目重构等。 本书适合有一定编程基础的 IT 职场新人,对设计模式和编程思想感兴趣的人群。通过阅读本书,读者可以更好地理解...
详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。
在本篇讨论中,我们将深入探讨面向对象设计模式的基本概念,以及在C#中应用这些模式的关键原则。 首先,我们需要理解面向对象设计的基本原则,这些原则是设计模式的基础。它们包括: 1. 单一职责原则(SRP):一个...