面向对象设计原则总结来讲包含六大基本原则,即开闭原则、里氏代换原则、合成复用原则、接口隔离原则、迪米特法则和依赖倒转原则。
掌握这六大基本设计原则的精髓,才能真正为以后的设计模式的学习做好铺垫,才能整理理解面向对象开发设计的原理,能够实现代码复用、开发可扩展、可重用的高质量代码。
开闭原则,即面向扩展开放,面向修改封闭,也就是说系统支持扩展,但是不支持修改。为什么这么说?在开发阶段,我们都知道,如果对一个功能进行扩展,如果只是一味地对方法进行修改,可能会造成一些问题,诸如可能会引入新的bug,或者增加代码的复杂度,对代码结构造成破坏、冗余,还需要重新进行全面的测试。那么该怎么解决这些问题?很简单,这就需要系统能够支持扩展,只有扩展性良好的系统,才能在不进行修改已有实现代码的基础上,引进新的功能。
要做到开闭原则,就需要多使用抽象类或者接口,将相似的类进行抽象,将公有的功能引入到抽象类中,这样在进行扩展时,只需要依据抽象类,生成新的子类即可。
里氏代换原则,即任何使用基类的地方,都能够使用子类替换,而且在替换子类后,系统能够正常工作。里氏代换原则在我们平时开发中用得很多,只要是实现了开闭原则,只要用到了抽象类或者接口,就应该会遇到。
而开闭原则和里氏代换原则则是我们下面要说的依赖倒转原则的基础。
什么是依赖倒转原则?就是说我们的client类要依赖于抽象,而不是依赖于具体,也就是我们经常听到的“要面向接口编程”。在具体的实现中,如果一个类是依赖于一个抽象类,比如用一个抽象类做为方法的参数,那么在实现时就可以灵活的切换这个抽象类的子类。
接口隔离原则,主要说的是应该将接口粒度最小化,将功能划分到每一个不能再分的子角色,为每一个子角色创建接口,通过这样,才不会让接口的实现类实现一些不必要的功能。比如一个门有如下功能:开门、关门、响门铃;但是只有有门铃的门才能响门铃,没有门铃的门就只能开门、关门。因此如果门没有门铃而实现了这个接口的话,就多出了响门铃的功能。因此,需要将门这个接口分为两个接口:“开门、关门”、“响门铃”。
迪米特法则,主要是说尽量减少类之间的依赖关系,降低类之间的耦合。在应用中最直接的实现就是在两个类中间建一个中介类。但是这样可能会造成中介类的澎爆。
合成复用原则,也就是少用继承,多用组合。使用组合也就是将两个类之间建立关联关系,将一个类做为另一个类的属性。这个主要是区分两个角色之间是“is a”还是“has a”的关系,如果是“is a”就需要使用继承,而如果是“has a”就需要使用组合。例如电脑可以分为台式机和笔记本,这就是is a的关系,但是电脑与CPU就是has a的关系。
分享到:
相关推荐
在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...
总结来说,这本书是面向C++程序员的一份宝贵资源,它深入探讨了设计模式的理论与实践,通过具体的案例分析,帮助读者掌握面向对象设计的核心原则。无论是初学者还是经验丰富的开发者,都可以从中受益,提升自己的...
本书“国外经典教材数据结构与算法——面向对象的C++设计模式”深入探讨了如何使用面向对象编程思想来构建高效、可维护的数据结构和算法。面向对象编程(Object-Oriented Programming, OOP)以其封装、继承和多态等...
数据结构与算法是计算机科学的基础,而面向对象的C++设计模式则是软件工程中的核心概念。这个主题结合了这两者,旨在提供一个深入理解如何在实际编程中有效地组织和优化数据的方法。 首先,数据结构是关于如何存储...
标题"设计模式可复用面向对象软件的基础"直接揭示了本文要探讨的核心——设计模式在构建可复用面向对象软件中的关键作用。设计模式不是具体的代码或库,而是一种通用解决方案的模板,它描述了在特定上下文中,当遇到...
《设计模式:可复用面向对象软件的基础》是一本深入探讨面向对象设计原则和模式的经典著作,旨在帮助软件开发者更好地理解和应用设计模式来构建高效、灵活且易于维护的软件系统。本文将根据提供的文档内容摘要,重点...
《UML和模式应用——面向对象分析与设计导论(第三版)》是一本深入探讨UML(统一建模语言)以及面向对象分析与设计的权威著作。在信息技术领域,UML作为一种可视化建模语言,是软件开发过程中的重要工具,而面向...
面向对象设计的四个核心原则——单一职责原则(Single Responsibility Principle, SRP)、开放封闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)和依赖倒置原则...
- **框架与库**:了解Spring、Hibernate等Java开发框架,以及它们如何利用面向对象原则。 - **测试驱动开发**(TDD):先编写测试,再编写满足测试的代码,确保代码质量。 通过这份资料,你可以逐步掌握面向对象...
面向对象(Object-Oriented,OO)是一种编程思想,它基于现实世界中的对象来构建软件系统,强调数据和操作数据的方法结合在一起,形成一个独立的单元——对象。面向对象编程的核心概念包括封装、继承和多态,这三大...
### 设计模式——可复用面向对象软件的基础 #### 知识点概览 1. **设计模式的概念与意义** 2. **设计模式在软件工程中的应用** 3. **常见设计模式分类及其特点** 4. **面向对象设计原则与设计模式的关系** #### ...
设计模式的精髓在于对面向对象编程特性之一——多态的灵活应用,而多态正是面向对象编程的本质所在。 接着,作者讨论了面向对象编程的本质是什么,并解释了面向对象编程和面向过程编程的核心区别。作者认为,面向...
这些模式的合理应用能够让软件设计更加符合面向对象的原则,使系统具备更好的可扩展性和可维护性。 #### 第五部分:小颗粒度基础模式和应用案例 这部分主要介绍了一些小规模的设计模式以及它们在实际项目中的应用...