欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浅谈设计模式(概述)

程序员文章站 2023-12-26 20:31:21
...
本文是我对设计模式的个人观点,仅用来抛砖引玉:
设计模式,用比较书面化的语言来定义,如下:
是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

这种定义,让专家来看可能会理解,但让初学设计的人员来看,或许太抽象,太模式,看完点头,回头犯愁,依然不知从何下手

首先列举在设计中常用的相关词汇,然后分别作解释:
1、高内聚,低耦合(High cohesion,Low coupling)
2、设计原则( Design principles )
3、设计模式( Design pattern )
4、框架(framework)
5、泛化(实现,继承),组合,聚合,关联
6、复用性,可扩展性,易维护性

我个人对这些名词作了一个总结如下:
内聚与耦合是很基础的两个概念,凡设计均要考虑(理论)
怎样做到高内聚,低耦合,这时就有指导方法,即设计原则(方法)
看完设计原则,不太明白怎么实现,实例说明,这些实例就是设计模式(实例)
模式有了,就需要有应用层的封装,即框架(某方面的产品)
内聚,耦合主要是类与类,模块与模块的关系,这些关系都有什么呢,有泛化(实现,继承),组合,聚合,关联.,你怎样定义这些关系,决定了程序的内聚和耦合度(涉及到的关系)
最终目的达到好的扩展性,高复用性,易维护性(目的)


下面我对这些概念再做一下解释,并举例说明:
高内聚:内聚就是一个模块内各个元素彼此结合的紧密程度,所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存在。
也就是说,让每个模块,尽可能的独立完成某个特定的子功能(从这里可以看出内聚高,本身就可以降低耦合)

这个理论很简单,但其实要具体情况具体分析,正如有人用下象棋形容做设计一样,即使你知道马走日,象走田,炮打一溜烟这种基本步骤,但要想下好象棋是需要大量更复杂的理论和经验的
内聚和设计原则中的单一职责一个道理,都是让本方法,本类,本模块的职责颗粒度最合适就好,如,
不够高内聚的例子有几种:
1、我们写个鸭子类,却有一个耕地的方法(根本不靠谱的设计)
2、我们写个鸭子类,里面有个疗伤的方法(看似也可以,但其实这个疗伤交给一个兽医类,可能更好,疗伤需要的参数可能是接口animal)
3、`我们有个Member会员类,有个属性叫登陆次数lTimes,本类有一个计数方法calTimes(),这种设计本无可厚非,但如果我们分析还有一个商品Production的类,里面有个属性叫点击次数hTimes,里面仍然有个计数方法calTimes(),这种设计就不太有内聚性了,我们可以将两个类中的calTimes()提到一个公共类出做calTimes(int times),这样显得Member与Production类显得更具有内聚性(可参考设计模式中的策略模式)
不够低耦合的例子有很多种,我认为大部分设计模式都是用来降低耦合的
但降低耦合可以表现在两个方面:
1、消除不恰当的依赖
2、通过其它方式依赖,可参考倚赖倒置原则

相关标签: 设计模式

上一篇:

下一篇: