`
aine_pan
  • 浏览: 43887 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

设计模式中的几个原则和类关系

 
阅读更多
设计模式中的几个原则/法则罗列一下。
开闭原则
开闭原则是模式的最基本原则,一句话概括:对扩展开放,对修改关闭。
在需求变更时,系统应该是通过扩展现有系统而不是修改原有逻辑,这是衡量一个架构优劣的最基本的条件。本原则是要求系统灵活性的体现。

里氏代换原则
里氏代换原则是其他一些原则的基础,一句话概括:子能代父,父不能代子。
这貌似是java语法规范,具体不讲。

依赖倒装原则
依赖倒装原则一句话概括:要依赖于抽象,而不依赖于具体。换言之:要针对接口编程,而不针对实现编程。
具体的实现就是尽量使用接口或者抽象类进行变量的声明,参量声明和返回值类型声明等。
List list = new ArrayList();

List是list的静态类型,而ArrayList是他的实际类型,如果以后需要用其他的方式是先List,就不用修改定义了,值需要修改实际类型。着也是系统灵活性的体现。

接口隔离原则
接口隔离就是尽量将接口抽象的独立,不要太多臃肿,不要让不必要的实现出现在不需要的实例中。

合成/聚合复用原则
如果需要复用模块,一般有两种方法,一种是使用继承,一种是使用合成/聚合。根据模式的要求,应该尽量使用合成/聚合的方式,避免直接使用继承复用。
这样做的目地是如果要使用继承,子类知道了所有父类的方法,安全性不高。继承也利于重构,过多的继承使结构过分的复杂,难以维护。

迪米特法则
一句话概括:不必彼此通信的两个类,就不应该发生直接作用,如果非要通信,可以通过第三者传递。本法则的根本思想是高内聚,低聚合,解耦不必要的关联关系。
缺点:1 会产生很多不必要的无业务意义的转发类。 2 降低了通信效率,模块间不易协调。
弥补:使用依赖倒转原则进行互补使用可以克服。

类图中类之间的几种关系:
一般关系
一般关系就是继承和实现关系,也就是父子关系。
UML中使用实线加三角表示继承,虚线加三角表示实现。

关联关系
关联关系表示一个类知道另一个类的所有情况,一般是一个类中包含另一个类的实例变量。
在UML中使用实现加箭头表示,二者关系可以是一对一,一对多的。

聚合关系
聚合关系是比较强的关联关系,不仅仅是一个类包含另一个类的实例,而且这二者是整体和个体之间的关系。在java的实现中聚合关系和关联关系在代码级上没有区别,只是在业务意义上二者的意义不一样。
在UML中使用实现和菱形表示,二者关系同关联关系。

合成关系
合成关系是比聚合关系更强的关联关系,要求两者之间是整体和部分的关系,并且整体对象负责部分对象的存活。部分对象不可共享。在java实现中,合成和聚合关系也是没有区别的,只有业务意义上的不同。
在UML中使用实线加实心菱形表示,二者关系同关联。

依赖关系
依赖关系表示一个类依赖于另一个类的定义,不同于关联关系的实例变量,而是通过方法传递引用,具体可以通过局部变量,方法参量以及静态方法调用的方式实现。有地方也称为使用关系。
在UML中用虚线加箭头来表示。

最后补充点抽象类和接口的关系:
1 抽象类可以提供缺省的实现
2 接口可以多继承
3 接口更利于重构
4 接口可以定义混合类型,如cloneable等。
最佳实现,使用抽象类实现接口,提供缺省的实现,根据自身逻辑重写部分方法。

记录以备查阅。
分享到:
评论

相关推荐

    C#设计模式.PDF

    七、 使用合成模式时考虑的几个问题 97 八、 和尚的故事 98 九、 一个实际应用Composite模式的例子 98 C#设计模式(12)-Decorator Pattern 101 一、 装饰(Decorator)模式 101 二、 装饰模式的结构 102 三、 装饰...

    设计模式.xmind

    该思维导图主要是对设计模式的知识进行了一个整体的复习和归纳,包括如下几个大模块:类之间关系,7大设计原则,创建型设计模式,结构性设计模式,行为型设计模式(待完善),每个模块又具体了分析了各个设计模式的...

    C#设计模式大全

    七、 使用合成模式时考虑的几个问题 八、 和尚的故事 九、 一个实际应用Composite模式的例子 C#设计模式(12)-Decorator Pattern 一、 装饰(Decorator)模式 二、 装饰模式的结构 三、 装饰模式示例性代码 ...

    第17章_职责链模式.ppt

    行为型模式分为类行为型模式和对象行为型模式两种: 类行为型模式:类的行为型模式使用继承...根据“合成复用原则”,系统中要尽量使用关联关系来取代继承关系,因此大部分行为型设计模式都属于对象行为型设计模式。

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

    敏捷软件开发原则,模式与实践

    许多有关软件设计的书籍中,要么先讲述一些设计原则、模式,然后再给出几个简单的在理想情况下的应用;要么是拿一个最终的设计结果来剖析,然后告诉你它们是多么的优美。当时,你可能真会那么认为,但是当你试图在...

    java设计模式选择题复习题.doc

    为什么 MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描 述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。 举出一个生活中使用装饰者模式的例子,用程序实现...

    设计模式的前奏----UML和设计模式的原则

    开篇我想上两幅图,是Objective-C编程之道中的几个瞬间,不美丽,但做为开篇是合适的。至少我这样认为。你能理解上面的图的大体意思吗?如果不能就不能好好理解设计模式,那么让我们学习认识这些图吧,下面我们开始...

    领域驱动设计与模式实战

    2.4 针对具体应用程序类型的设计模式 2.5 领域模式 2.6 小结 第3章 TDD与重构 3.1 TDD 3.1.1 TDD流程 3.1.2 演示 3.1.3 设计效果 3.1.4 问题 3.1.5 下一个阶段 3.2 模拟和桩 3.2.1 典型单元测试 3.2.2 声明独立性 ...

    UML和模式应用(架构师必备).part06.rar

    12.3 完成所有分析和建模工作是否需要几个星期 第13章 逻辑架构和UML包图 13.1 示例 13.2 什么是逻辑架构和层 13.3 案例研究中应该关注的层 13.4 什么是软件架构 13.5 应用UML:包图 13.6 准则:使用层进行...

    Access-2010数据库应用:数据库设计的基本原则.pptx

    3 设计数据库时要综合考虑多个因素,权衡各自利弊确定数据表的结构,基本原则有以下几条: (1)把具有同一个主题的数据存储在一个数据表中,也就是"一表一用"的设计原则。 (2)尽量消除包含在数据表中的冗余数据...

    designmode:23种设计模式深入剖析

    DesignMode0、设计模式的六大原则单一职责原则:接口要做到职责单一,类的设计尽量做到只有一个原因引起变化里氏替换原则:所有引用基类的地方必须能透明地使用其子类对象,换言之,在类的设计中要做到拥抱抽象,...

    数据仓库星形模式下维使用原则的研究与探索

    星形模式是基于关系数据库的数据仓库中的一个著名概念,由于星形连接模式的设计思想能够满足人们从不同观察角度(维)分析数据的需求,所以在基于关系数据库的数据仓库的设计中广泛地使用了星形模式。在使用数据仓库...

    UML和模式应用(架构师必备).part02.rar

    12.3 完成所有分析和建模工作是否需要几个星期 第13章 逻辑架构和UML包图 13.1 示例 13.2 什么是逻辑架构和层 13.3 案例研究中应该关注的层 13.4 什么是软件架构 13.5 应用UML:包图 13.6 准则:使用层进行...

    asp.net知识库

    与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const...

    PetShop4.0宠物商店+系统架构设计+中文注释源码+PDF中文详解

    5、 由于PetShop只是一个演示程序,所以若对数据库操作的某一类别(如对Account进行操作)中定义的“操作类”不够用(如除了接口中定义的几个方法外还需要其他Account操作),还可以在接口中追加其他的方法,用以...

    UML和模式应用期末复习资料

    文档中有下列题目的答案: 简答题 请指出UML的三个主要的特性。 UML是一种方法论吗?并简要说明理由。 应用UML的三种方式是什么?...说说敏捷UP方法从需求到设计的整个过程,要求说出主要步骤和产出工件?

    数据库设计:逻辑结构设计.pdf

    关系范式是关系模式满足不同程度的规范化要求的标准, 是数据库逻辑设计 的指南和工具 关系规范化的前三个范式原则如下: 第一范式:若一个关系模式 R 的所有属性都是不可再分的基本数据项,则该 关系模式属于第一...

    UML和模式应用(架构师必备).part01.rar

    12.3 完成所有分析和建模工作是否需要几个星期 第13章 逻辑架构和UML包图 13.1 示例 13.2 什么是逻辑架构和层 13.3 案例研究中应该关注的层 13.4 什么是软件架构 13.5 应用UML:包图 13.6 准则:使用层进行...

    UML和模式应用(架构师必备).part07.rar

    12.3 完成所有分析和建模工作是否需要几个星期 第13章 逻辑架构和UML包图 13.1 示例 13.2 什么是逻辑架构和层 13.3 案例研究中应该关注的层 13.4 什么是软件架构 13.5 应用UML:包图 13.6 准则:使用层进行...

Global site tag (gtag.js) - Google Analytics