看设计模式看了一段时间了,应该说在大学里面已经针对设计模式上课学习过一遍,记得初次看学习设计模式的时候,感觉很强大,有太多新的自己想象不到的设计思路,一个个在接受,毕竟学生的时候只是觉得新颖在看看,对于他的灵魂--设计模式的几个基本原则,也就只能达到随口而出的一个“开-闭原则”吧,呵呵,这段时间再细看了一遍,理解比以前深了一点,持续学习中。。。,先把几大基本原则记录下来先
1、开-闭原则
模块应对扩展开放,而对修改关闭,简而言之,我们要新增或修改功能的时候,尽量达到不要修改原来的代码,而通过模块扩展去实现,具体到我们平时的现实应用中,可以描述如下:
1).客户的需求是不稳定的,通过扩展已有的软件系统而不是通过修改软件系统来满足客户的需求,这样的软件系统就满足开-闭原则,即软件系统要有一定的灵活性和适应性。
2).已有的模块,特别是抽象层的模块不能修改,保证软件系统的稳定性和延续性。 解决问题的关键是抽象化,把它与具体实现分离开来。接口(interface),抽象类的应用 对可变性封装:将可变性封装到一个对象里。
2、里氏代换原则
如果调用的是父类的话,那么换成子类也完全可以运行。里氏代换原则是继承复用的一个基础。体现为:
当两个具体类关系违反里氏代换原则时,一种办法是抽象出一个基类,作为这两个类的父类, 一种是应用组合聚合关系建立关系。 不要为了使用某些类的方法(功能)而滥用继承。
3、合成复用原则
就是说要少用继承,多用合成关系来实现
这个原则当初看起来比较虚,一直没有理解到其中内含,直至今日,虽然有了更深一点的体会,但实际应用中还是把握得不是很好。Prefer composition to inheritance.这句话的背景是OO初期大家都把继承看作是万能的,并过度使用继承来实现多态->可扩展.
体现为:比如说你项目中的很多类都要和数据库做交互,这种情况下我们都往往会抽象一个数据库操作类出来,然后把自己觉得公用的方法一脑子在这个操作类里面实现,然后其中的和数据库有交互的类都继续这个类,看起来这个没有多大问题,但是如果操作类这个公用性抽象不好,某天你需要改操作类的某个方法,你会发现你下面的各个类都需要做相应的修改,变动那是相当大呀。当然这个例子可能不是很好,意会一下...
4、依赖倒转原则
抽象不应该依赖与细节,细节应当依赖与抽象。 要针对接口编程,而不是针对实现编程。 传递参数,或者在组合聚合关系中,尽量引用层次高的类。 主要是在构造对象时可以动态的创建各种具体对象,当然如果一些具体类比较稳定,就不必在弄一个抽象类做它的父类,这样有画舌添足的感觉
5、接口隔离原则
定制服务的例子,每一个接口应该是一种角色,不多不少,不干不该干的事,该干的事都要干
6、抽象类
抽象类不会有实例,一般作为父类为子类继承,一般包含这个系的共同属性和方法。
注意:好的继承关系中,只有叶节点是具体类,其他节点应该都是抽象类,也就是说具体类
是不被继承的。将尽可能多的共同代码放到抽象类中。
7、迪米特法则
最少知识原则。不要和陌生人说话。
分享到:
相关推荐
在本文中,我们将深入探讨结构型模式以及设计模式的基本原则。 结构型模式是设计模式的一种类别,它关注如何组合类和对象以创建更复杂的结构。这类模式主要涉及类和对象的组合,分为类模式和对象模式。类模式使用...
在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...
首先,我们需要理解面向对象设计的基本原则,这些原则是设计模式的基础。它们包括: 1. 单一职责原则(SRP):一个类或模块应只有一个改变的原因。这有助于保持代码的模块化,降低耦合度。 2. 开放封闭原则(OCP)...
在这些设计模式和原则中,策略模式是一个非常重要的行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换使用。策略模式让算法的变化独立于使用算法的客户端。 以提供的文档内容为例,...
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能...
7. ** SOLID原则**:这五个原则的总称,是面向对象设计的基本原则。 在Android框架中,比如Android Architecture Components(AAC)组件,如LiveData、Room和ViewModel,都是设计模式和原则的体现。通过理解和应用...
设计模式是软件工程中的一套...而设计原则是指导设计模式形成的基本规则,它们帮助开发者构建出更加稳定、灵活和可扩展的系统。随着技术的发展和项目复杂性的增加,对于设计模式和设计原则的理解和运用变得越来越重要。
里氏转换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,它是SOLID原则中的L原则。这个原则是由Barbara Liskov在1987年提出的,它规定子类型必须能够替换它们的基类型,而不影响程序...
设计模式六大原则是软件设计中遵循的一些基本原则,目的是为了使软件设计更加灵活、可维护和可扩展。六大原则分别是:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。 1. 单一...
该资源涵盖了软件设计模式的基础知识,包括软件设计模式的概述、UML中的类图、面向对象的设计原则、单例模式、原型模式等。 软件设计模式概述 软件设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码...
首先,让我们了解面向对象设计的基本原则,它们包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)。这些原则指导我们如何编写高质量的、易于维护的代码。 1. 单一...
总结,设计模式的六大原则是指导软件设计的基本准则,它们帮助我们编写可维护、可扩展的代码,降低系统的耦合度,提高代码的灵活性。遵循这些原则,可以使我们的软件设计更加健壮,更易于理解和维护。在实际开发中,...
通过以上内容可以看出,《深入设计模式》不仅涵盖了设计模式的基本概念和应用,还深入探讨了面向对象编程的基础知识以及软件设计原则,为读者提供了全面而深入的理解。无论是初学者还是有一定经验的开发者,都能从中...
设计模式不仅提供了交流的共同语言,还通过遵循经典的设计原则,如单一职责、开闭原则、里氏替换、依赖倒置、接口隔离、合成复用和迪米特法则,帮助开发人员在保持灵活性的同时减少错误和提高代码质量。
1. **设计模式的基本概念**:首先,会介绍设计模式的概念,它是经验的总结,一种解决特定问题的通用可重用方案。设计模式并不直接提供代码,而是提供一种理解和解决问题的方法论。 2. **面向对象设计原则**:包括...
Java23种设计模式最牛逼的例子
题目中的第一个选项“同一问题的不同表现形式”(A) 描述了设计模式的主要应用场景之一。设计模式帮助开发者处理常见的软件设计难题,确保代码的可读性、可维护性和可扩展性。 ### 2. 面向对象的基本原则 面向对象...