设计模式中的几个原则/法则罗列一下。
开闭原则
开闭原则是模式的最基本原则,一句话概括:对扩展开放,对修改关闭。
在需求变更时,系统应该是通过扩展现有系统而不是修改原有逻辑,这是衡量一个架构优劣的最基本的条件。本原则是要求系统灵活性的体现。
里氏代换原则
里氏代换原则是其他一些原则的基础,一句话概括:子能代父,父不能代子。
这貌似是java语法规范,具体不讲。
依赖倒装原则
依赖倒装原则一句话概括:要依赖于抽象,而不依赖于具体。换言之:要针对接口编程,而不针对实现编程。
具体的实现就是尽量使用接口或者抽象类进行变量的声明,参量声明和返回值类型声明等。
List list = new ArrayList();
List是list的静态类型,而ArrayList是他的实际类型,如果以后需要用其他的方式是先List,就不用修改定义了,值需要修改实际类型。着也是系统灵活性的体现。
接口隔离原则
接口隔离就是尽量将接口抽象的独立,不要太多臃肿,不要让不必要的实现出现在不需要的实例中。
合成/聚合复用原则
如果需要复用模块,一般有两种方法,一种是使用继承,一种是使用合成/聚合。根据模式的要求,应该尽量使用合成/聚合的方式,避免直接使用继承复用。
这样做的目地是如果要使用继承,子类知道了所有父类的方法,安全性不高。继承也利于重构,过多的继承使结构过分的复杂,难以维护。
迪米特法则
一句话概括:不必彼此通信的两个类,就不应该发生直接作用,如果非要通信,可以通过第三者传递。本法则的根本思想是高内聚,低聚合,解耦不必要的关联关系。
缺点:1 会产生很多不必要的无业务意义的转发类。 2 降低了通信效率,模块间不易协调。
弥补:使用依赖倒转原则进行互补使用可以克服。
类图中类之间的几种关系:
一般关系
一般关系就是继承和实现关系,也就是父子关系。
UML中使用实线加三角表示继承,虚线加三角表示实现。
关联关系
关联关系表示一个类知道另一个类的所有情况,一般是一个类中包含另一个类的实例变量。
在UML中使用实现加箭头表示,二者关系可以是一对一,一对多的。
聚合关系
聚合关系是比较强的关联关系,不仅仅是一个类包含另一个类的实例,而且这二者是整体和个体之间的关系。在java的实现中聚合关系和关联关系在代码级上没有区别,只是在业务意义上二者的意义不一样。
在UML中使用实现和菱形表示,二者关系同关联关系。
合成关系
合成关系是比聚合关系更强的关联关系,要求两者之间是整体和部分的关系,并且整体对象负责部分对象的存活。部分对象不可共享。在java实现中,合成和聚合关系也是没有区别的,只有业务意义上的不同。
在UML中使用实线加实心菱形表示,二者关系同关联。
依赖关系
依赖关系表示一个类依赖于另一个类的定义,不同于关联关系的实例变量,而是通过方法传递引用,具体可以通过局部变量,方法参量以及静态方法调用的方式实现。有地方也称为使用关系。
在UML中用虚线加箭头来表示。
最后补充点抽象类和接口的关系:
1 抽象类可以提供缺省的实现
2 接口可以多继承
3 接口更利于重构
4 接口可以定义混合类型,如cloneable等。
最佳实现,使用抽象类实现接口,提供缺省的实现,根据自身逻辑重写部分方法。
记录以备查阅。
分享到:
相关推荐
设计模式是软件开发中的一种重要概念,用于解决常见的设计问题并...在实际开发中,可以结合多种设计模式以实现更复杂的系统架构,如 Spring 框架就广泛使用了工厂模式和其他设计模式来管理对象的生命周期和依赖关系。
设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 设计模式的优点 正确使用设计模式具有以下优点: 1. ...
在这个"设计模式课程设计模板"中,我们可以期待学习到以下几个主要的知识点: 1. **设计模式分类**:设计模式通常分为三类——创建型、结构型和行为型。创建型模式关注对象的创建,如单例模式、工厂模式、抽象工厂...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
设计模式中的类关系主要包括依赖、关联、聚合和组合等几种形式。正确区分这些概念对于编写清晰、易于维护的代码至关重要。 - **依赖**:一种类A使用类B的功能,但并不持有类B的实例。 - **关联**:类A持有类B的一个...
设计模式的几个基本原则包括: 1. **单一职责原则**:一个类应该只做一件事情,有一个明确的责任。 2. **开放封闭原则**:软件实体(类、模块、函数等)应对于扩展开放,对于修改关闭。 3. **里氏替换原则**:子类...
在提供的压缩包文件中,我们看到几个关键的目录和文件: 1. `.classpath`:这是一个Eclipse项目配置文件,它包含了项目的类路径信息,用于指导Eclipse编译器和运行时环境找到所需的类和库。这通常包括项目的源代码...
根据《设计模式——可复用面向对象软件的基础》,设计模式可以分为以下几类: 1. **创建型模式**:关注于对象的创建机制,确保系统能够灵活地创建所需的对象。 - **工厂方法模式** - **抽象工厂模式** - **单例...
- 学习设计模式的同时,也要关注面向对象设计原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。 总的来说,这个资源提供了对Java常用设计模式的实战经验和源码,是开发者提升技能、优化...
Cooper编写的经典书籍,该书详细介绍了Java编程语言中的设计模式,并通过实际案例深入探讨了这些模式的应用场景和实现细节。 在本书的前言部分(第3页),作者简要介绍了设计模式的概念及其在Java中的应用。他强调...
【无废话C#23种设计模式】是一个关于软件开发中设计模式的讲解,主要遵循了几个核心的设计原则,如单一职责、对扩展开放、对修改封闭、里氏替换、依赖倒置和接口隔离。这些原则是软件设计的基石,有助于创建更健壮、...
这个原则的核心思想是降低类与类之间的耦合度,使得系统更加灵活,可维护性和可扩展性更强。在实际应用中,迪米特原则建议每个对象应该尽可能少地了解其他对象的内部细节,只和自己的朋友交流,不与陌生人说话,从而...
在设计模式的PDF文档中,每个模式通常会包含以下几个部分: 1. 模式名称:便于记忆和引用。 2. 问题:描述了该模式试图解决的具体问题或场景。 3. 解决方案:详细阐述模式的基本结构和组件,以及它们如何协作来解决...
UML(统一建模语言)是一种标准的图形化建模语言,主要用于软件的分析和设计,通过定义完善的符号来图形化展示软件系统。...掌握UML类图和各种设计模式之间的关系,对于理解和应用设计模式至关重要。
设计模式是软件工程领域中一个非常重要的话题,它为解决常见的软件设计问题提供了标准化的方法。本书《C++设计模式》聚焦于GoF(Gang of Four)所提出的23种设计模式,并通过C++语言进行深入解析和实现。通过本书的...
- **应用场景**:当一个类的实例只能有几个不同状态组合中的一种时使用。 - **优点**:可以通过克隆已有实例来快速创建新实例。 - **缺点**:需要为每一个类配备一个克隆方法。 #### 结构型模式 结构型模式处理...
- **设计模式与面向对象编程原则的关系**:解释设计模式是如何基于面向对象编程的基本原则构建的,以及它们如何相互影响和支持。 - **最佳实践建议**:给出在实际开发过程中如何有效地使用设计模式的一些建议和技巧...
面向对象设计模式与原则”的视频讲座中,我们很可能会深入探讨以下几个核心知识点: 1. **设计模式的基本概念**:首先,会介绍设计模式的概念,它是经验的总结,一种解决特定问题的通用可重用方案。设计模式并不...
为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...
为了更好地理解设计模式的实际应用,下面介绍几个典型的设计模式案例: 1. **单例模式**(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。这对于配置管理、日志记录等场景非常有用。 2. **...