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

浅谈设计模式(概述)

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

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

首先列举在设计中常用的相关词汇,然后分别作解释:
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、通过其它方式依赖,可参考倚赖倒置原则

分享到:
评论

相关推荐

    浅谈OOP之uml设计模式

    **OOP之UML设计模式概述** 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它以对象为中心,强调数据和操作数据的方法,通过封装、继承和多态等特性来实现软件的模块化和可扩展性。在OOP中...

    C#面向对象设计模式纵横谈(

    ### C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) #### 概述 在面向对象编程中,设计模式是一种被广泛接受的解决方案,用于解决常见的软件设计问题。其中,原型模式(Prototype Pattern)属于...

    浅谈MVP.doc

    #### 一、MVP设计模式概述 在软件工程中,特别是在GUI应用程序开发领域,为了更好地组织代码结构和提高开发效率,设计师和开发者们发展出了多种设计模式。其中,Model-View-Presenter (MVP) 模式是一种广泛采用的...

    2021-2022年收藏的精品资料浅谈广州市轨道交通设计项目管理模式.doc

    【广州市轨道交通设计项目管理模式概述】 广州市的轨道交通网络发展迅速,目前已有建成的一号线和二号线,以及正在建设和规划中的多条线路。这种大规模的城市轨道交通工程不仅需要高效的建设,还需要先进的设计项目...

    浅谈观察者模式及在C#中的实现

    观察者模式(Observer Pattern)是一种行为设计模式,其主要目的是解决面向对象设计中常见的问题——如何实现对象间的解耦,使得一个对象的状态改变能够自动通知其他多个依赖对象,从而达到“高内聚、低耦合”的设计...

    浅谈Java设计模式系列-装饰器模式

    Java 设计模式系列 - 装饰器模式 Java 设计模式系列 - 装饰器模式是 Java 设计模式系列中的一种重要模式,它主要用于对目标方法进行增强,提供新的功能或者额外的功能。装饰器模式的主要特点是涉及的是单方,目标...

    Java 设计模式

    ##### 2.1 设计模式概述 设计模式是一种在特定上下文中解决问题的方案。在Java编程语言中,设计模式可以帮助开发者更好地组织代码,使其更加模块化、易于理解和维护。设计模式可以分为三大类:创建型模式、结构型...

    浅谈EPC工程总承包管理模式.docx

    【EPC工程总承包管理模式概述】 EPC(Engineering-Procurement-Construction)工程总承包管理模式是一种集设计、采购、施工于一体的工程管理方式,旨在解决设计、采购、施工相互制约的问题,提高项目管理水平,确保...

    C#视频-面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在本课程中,我们将深入探讨C#编程中的一个重要设计模式——Prototype原型模式,它是创建型设计模式的一种。原型模式主要用于简化实例化过程,通过复制已有对象来创建新对象,而不是直接通过构造函数来创建。这一...

    基于“互联网 ”服务链创新模式浅谈大众心理倾诉服务平台APP的设计与实现.pdf

    "基于“互联网 +”服务链创新模式浅谈大众心理倾诉服务平台APP的设计与实现" 本文主要讨论了基于“互联网 +”服务链创新模式的大众心理倾诉服务平台APP的设计与实现。该平台旨在普及心理健康知识,让用户更容易从...

    浅谈并行编程中的任务分解模式.doc

    ### 浅谈并行编程中的任务分解模式 #### 一、引言 并行编程是一种通过利用计算机系统中多个处理器或核心的能力来提高程序执行效率的技术。为了有效地进行并行编程,开发人员需要掌握如何合理地分解任务,以便能够...

    浅谈相位和频率修正PWM模式的原理

    #### 相位和频率修正PWM模式概述 相位与频率修正PWM模式(WGMn3:0=8或9)是一种能够同时调整相位和频率的PWM生成方法。这种模式基于双斜波操作,即计数器从BOTTOM计到TOP后,再从TOP倒回到BOTTOM。这种机制能够提供...

    浅谈如何支持幼儿在游戏中深度学习.pdf

    【幼儿区域游戏深度学习概述】 深度学习是一种以高级思维发展为目标的学习模式,它强调整合知识,鼓励幼儿批判性地理解和吸收新知识,并将其融入到原有的认知结构中。区域游戏是教师利用材料创建开放性游戏环境,...

    浅谈矿山参数化绘图的应用设计

    ### 浅谈矿山参数化绘图的应用设计 #### 一、引言 近年来,随着煤炭行业信息化进程的加速,煤矿绘图技术也经历了从传统手工绘图向数字化、智能化转变的过程。然而,传统CAD(Computer-Aided Design)软件在面对...

    浅谈信息化教学过程的有效性设计研究.docx

    ### 浅谈信息化教学过程的有效性设计研究 #### 摘要及背景介绍 随着信息技术的飞速发展,教育领域也迎来了前所未有的变革。信息化教学作为一种新兴的教学模式,正在逐步改变传统的教学方式,并显著提升了教学质量和...

    嵌入式系统/ARM技术中的浅谈低功耗概述及特性优势

    概述  由于功耗敏感应用大幅增加,加上功率预算日益紧张,低的系统功耗已成为越来越多应用的需要。当今,FPGA技术更多地用于低功耗设备,这使得降低系统功耗成为日益重要的挑战。近年来,FPGA因为采用了能降低成本...

    浅谈计算机课件的教学设计.pdf

    【计算机课件教学设计概述】 计算机课件是现代教育技术中的重要组成部分,尤其在互联网时代,它们成为远程教育和虚拟教学的主要工具。课件是指针对某一课程或知识点设计的教学软件,而堂件则是针对课程中特定一节或...

Global site tag (gtag.js) - Google Analytics