`

设计模式-01-模糊理解

阅读更多

  一、概念:

     设计模式,别人都说它们就像是一个个的模型胚子,不管你们是多么的杂乱无章,只要经过它们的改造,表现出来的就都会是工工整整,标标准准的。而我觉得更确切的比喻应该是像一个制砖块儿的模具,虽然我们不知道为什么砖块儿,不仅要结实,也要外表光滑才能称为一块儿好砖头。但是我却知道只有砖块儿 的模具首先光滑了,才行。所以我们必须拥有制砖模具,而且种类也要多,虽然网上说 的是23种,但我认为不管多少,实用,有用,才是硬道理。

        作为一个个解决问题的方法,有时候不经意我们就用上了,当然这只是习惯成自然。我们也必须知道这些个模具一个个的名字。因为有些东西有了名称就更容易被人记住,被人继承和传播交流。

 下面是23中设计模式的分类:

Ø 接口型模式: Adapter( 适配器 ) 模式, Facade( 外观 ) 模式, Composite( 组合 ) 模式, Bridge( 桥接 ) 模式

 

 

 

Ø 责任型模式: Singleton( 单例 ) 模式, Observer( 观察者 ) 模式, Mediator( 中介者 ) 模式, Proxy( 代理 ) 模式, Chain of Responsibility( 责任链模式 ),Flyweight( 享元 ) 模式

 

 

 

Ø 构造型模式: Builder( 生成器 ) 模式, Factory Method( 工厂方法 ) 模式, Abstract Factory( 抽象工厂 ) 模式, ProtoType( 原型 ) 模式, Memento( 备忘录 ) 模式

 

 

 

Ø 操作型模式: Template Method( 模板方法 ) 模式, State( 状态 ) 模式, Stratege( 策略 ) 模式 ,Command( 命令 ) 模式, Intepretor( 解释器 ) 模式

 

 

Ø 扩展型模式: Decorator( 装饰器 ) 模式, Iterator( 迭代器 ) 模式, Visitor( 访问者 ) 模式

另外一种分类方法,总体来说设计模式分为三大类:

 

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

 

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

 

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

 

其实还有两类:并发型模式和线程池模式。

 

总之,好的设计模式能让你写的一个好的系统架构。

 

二、设计模式的六大原则

 

1、开闭原则(Open Close Principle)

 

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

 

2、里氏代换原则(Liskov Substitution Principle)

 

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里 氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现 抽象化的具体步骤的规范。—— From Baidu 百科

 

3、依赖倒转原则(Dependence Inversion Principle)

 

这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

 

4、接口隔离原则(Interface Segregation Principle)

 

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

 

5、迪米特法则(最少知道原则)(Demeter Principle)

 

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

 

6、合成复用原则(Composite Reuse Principle)

 

原则是尽量使用合成/聚合的方式,而不是使用继承。

 

 

 

 

0
0
分享到:
评论

相关推荐

    模式识别--VC++技术实现

    这里面对模式识别的基本概念,位图的基础知识,分类器设计,模板匹配分类器,基于概率统计的Bayes分类器,几何分类器,神经网络分类器,图像分割与特征提取,聚类分析,模糊聚类分析,遗传算法聚类进行了相应的代码...

    论文研究-改进的结构相似医学图像质量评价方法.pdf

    从系统源码中挖掘设计模式对软件的可理解性和可维护性具有重要意义。基于模糊理论,提出一种模式匹配方法,实现设计模式挖掘。其中,使用基于类关系的素数矩阵模型对设计模式结构及源码信息进行描述,并作为匹配的...

    Java与模式(清晰书签版).part2(4-2)

    本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...

    Java与模式(清晰书签版).part1(4-1)

    本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...

    Java与模式(清晰书签版).part4(4-4)

    本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...

    Java与模式(清晰书签版).part3(4-3)

    本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,每一个章节讲解一个编程模式,说明此模式的用意、结构,...

    DesignPatterns:设计模式项目 原理与案例

    将已证实的表述成设计模式也会使新开发者更加容易理解其设计思路。 设计模式有23种,在编程规范和体系结构设计中被广泛采用,其中最常用的有以下10种,本为以简单的例子介绍设计模式的核心内容并通过android项目开发...

    msp430书稿开发板

    3.3.3.3 模糊控制器设计 229 3.3.3.4 小结 229 3.3.4 运动控制算法 230 3.3.4.1产生线段的整数Bresenham算法 230 3.3.4.2产生圆的整数Bresenham算法 232 3.3.5 其它控制算法 235 3.3.6 压缩算法 236 3.3.6.1 无损...

    Fuzzy Set and Its Extension: The Intuitionistic Fuzzy Set

    Provides detailed mathematical exposition of the fundamentals of fuzzy set theory, including...模糊集及其扩展:直觉模糊集是研究生和研究生以及专业人员在图像处理,决策,模式识别和控制系统设计中的理想文本。

    模式识别第二版 重点讨论统计模式识别方法中的特征提取和分类决策。

    从教学角度出发,首先研究各种分类器的设计方法是qJ取的,在这个基础上就更容易理解特 征提取和选择的重要性。对于一个实际的模式识别系统,当然只有在特征确定以后,才能对 分类器的参数进行计算。实际工作中,这...

    refactoring-to-patterns:重构与模式

    重构与模式写作缘由过度设计指代码的灵活性和...目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低重构过程去除重复、简化复杂逻辑和澄清模糊的代码重构的动机使新代码的增加更容易改善既有代码的设

    基于MVC的JavaScript Web富应用开发 (英文版)

    传统编程语言中的设计模式、mvc、应用架构等理论也在慢慢地融入web 前端开发。这本书所涵盖的知识点非常全面,从mvc 的基本理论到网络协议、从模块解耦到异步编程模型、从html5/css3 到nodejs、从软件测试到部署调试...

    数据库-学生管理系统实验报告.docx

    理解和掌握E-R图的设计方法和关系模式的转换。 掌握高级语言连接数据库的基本方法。 实验要求 开发一个C/S或者B/S的数据库应用系统。具体要求如下: 前台开发工具不限制,后台数据库管理系统采用SQL SERVER。 后台...

    软件设计规范

    所谓统一建模,所谓设计模式,其实都是软件生成的问题。 需求分析。需求分析本质上是独立的。所谓OOA,面向对象的建模,把程序构造概念上升到需求分析领域可能是不对的。一个先验的,复杂的难于掌握的限制,只会让人...

    Sketch for Mac 破解版下载 (一款适用于所有设计师的矢量绘图应用)

    我们尽力让 Sketch 容易理解并上手简单,有经验的设计师花上几个小时便能将自己的设计技巧在Sketch中自如运用。对于绝大多数的数字产品设计,Sketch 都能替代 Adobe Photoshop,Illustrator 和 Fireworks。 为...

    图像识别算法-人工智能-图像识别.pdf

    模式识别主要分为三种:统计模式识别、句法模式识别、模糊模式识别。 2、图像识别技术的过程 既然计算机的图像识别技术与⼈类的图像识别原理相同,那它们的过程也是⼤同⼩异的。图像识别技术的过程分以下⼏步:信息...

    基于Java的五子棋游戏的设计(源代码+论文)

    1 本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的...人工智能在专家系统,自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库

    计算机辅助工业设计中的人机交互.doc

    与传统的工业设计相比,计算机辅助工业设计在设计方法、设计过程、设计质量 和设计效率等各方面都发生了质的变化,它涉及了CAD技术、人工智能技术、多媒体技术 、虚拟现实技术、敏捷制造、优化技术、模糊技术、人机...

    学生成绩管理系统的设计与实现

    第二章对数据库的设计和SQL语言的使用进行了系统分析,为深入理解数据库应用打下了基础。 第三章学习了具体的开发工具Delphi 6.0,对其数据库组件,SQL语言在Delphi中的应用等数据库编程关键技术进行了系统的...

Global site tag (gtag.js) - Google Analytics