`
emowuyi
  • 浏览: 1509222 次
文章分类
社区版块
存档分类
最新评论

设计模式——序

 
阅读更多

设计模式已经学完一大阵子了,但是总结总是跟不上。

对于“Design pattern”应该很多人都比较熟悉,他是随着面向对象的发展应运而生的一种编程思想,它使得程序更加灵活,容易修改,并且易于复用,完全符合设计中的“开放-封闭”原则。

而且设计模式为设计提供了共同的词汇,每个模式名就是一个设计词汇,其概念使得程序员的交流变得方便,在开发文档中采用模式词汇可以让其他人更容易理解你的想法,所有,设计模式不仅仅用在程序中,更对于交流起了枢纽作用,所以,学不好设计模式的程序员不是好的程序员。

设计模式中最被看好的应该就是GoF提出的设计模式,下面我们就谈谈“Gang of Four”的23中设计模式。

在面向对象过程设计中,无非处理的就是对象(类),对象的设计又分为两类,即对象的创建和对对象的处理。对对象的处理又可以分为对象与对象之间的组合和对象与对象之间交互及分配职责,根据这种思想,上网上查了个和我有类似想法的分类,自认为还比较好。

GoF设计模式按目的准则分类,可以分为三类:一、创建型(creational),即与对象的创建有关的模式。二、结构型(Structural),即处理类或者对象之间的组合。三、行为型(behavioral)、描述类或对象如何交互及如何分配职责。

创建型模式:

1.抽象工厂模式(AbstractFactory)

2.建造者模式Builder

3.工厂方法模式FactoryMethod

4.原型模式Prototype

5.单例模式Singleton

结构性模式

1.设配器模式Adapter

2.桥接模式Bridge

3.组合模式Composite

4.外观模式Façade

5.装饰模式Decorator

6.享元模式Flyweight

7.代理模式Proxy

行为模式

1.职责连模式Chain of Responsibility

2.命令模式Command

3.解释器模式Interpreter

4.迭代器模式Iterator

5.中介者模式Mediator

6.备忘录模式Memento

7.观察者模式Observer

8.状态模式State

9.策略模式Strategy

10.模板方法模式Template Method

11.访问者模式Visitor

对于这23中设计模式,没有好坏之分,只有合适于不合适,就像对于一棵树来说,并不是越高越好,当我们需要生成一颗牙签时,我们不需要一个参天大树,当然,用一颗参天大树生成一颗牙签完全不是问题,甚至生成上万只牙签都不是问题,但是,对于只需要一支牙签的我们来说,这就是浪费,很多人觉得可笑,谁会傻到用一颗大树去生成一支牙签呢,但是,在设计中,我们却常常把握不好这个度,也就是经常会发现的“设计过度”,这也是刚学完设计模式的程序员最容易犯的错误,本来只需要一根牙签,在写需求时,因为急于表现自己,而把需求写成一颗大树,看似能适应各种需求变化,但是,对于很多百分之一、千分之一发生的事情来说这种设计很容易变成一种负担,时间与经济的负担。所以,设计模式,一定要用到恰到好处。

当然,把握这个度也不是一件简单的事情,当我们没有实战经验去锻炼时,我们唯一能做的,就是用前人的经验,去给自己长教训,这也就是网络发挥力量的适合了,这也是深深体会我们程序员伟大的地方,遇到问题就写博客分享。这种分享精神不是每一个行业都有的。说到底,对于我们这些菜鸟级的程序员来说,面对抽象的设计模式,最好的办法不是先去写程序然后撞个头破血流来获得经验,而是用别的人装的头破血流的经验来给自己长教训。

所以,后续博客我将会写到关于23种设计模式最佳的实用范围,敬请关注!!!

分享到:
评论

相关推荐

    设计模式课程设计- 画 图 程 序.doc

    《设计模式课程设计——画图程序》 设计模式是软件工程中的重要概念,它是一种解决常见问题的经验总结,能够帮助开发者构建可维护、可扩展的系统。在这个画图程序的课程设计中,我们将运用多种设计模式来实现一个...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 0. 引言 ##### 0.1 设计模式解析(总序) 设计模式是面向对象编程中用于解决常见问题的一系列模板。它们为软件设计提供了标准化的解决方案,帮助...

    Python掌握设计模式.pdf

    该文件主要关注的是Python编程语言以及在软件工程领域中极为重要的一个概念——设计模式。 首先,“Python掌握设计模式”这一标题意味着文档将深入探讨如何利用Python语言来实现各种设计模式。设计模式是软件设计中...

    c++设计模式 设计模式精解-GoF 23种设计模式解析附C++实现源码

    ### C++设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。本文旨在深入剖析GoF(Gang of Four)提出的23种...

    毕业设计——单片机 交通灯设计论文资料.zip

    标题中的“毕业设计——单片机 交通灯设计论文资料.zip”表明这是一份与电子工程相关的毕业设计项目,具体是使用单片机技术来设计交通信号灯控制系统。这个项目结合了理论学习与实践操作,旨在培养学生在硬件设计、...

    应需而变——设计的力量

    2. 设计模式:包括经典设计模式和现代设计模式,如何选择和组合使用。 3. 可维护性与可扩展性:如何通过设计确保代码的这两个关键特性。 4. 重构:改善现有代码结构的方法,以支持更好的设计。 5. 敏捷开发:设计在...

    网络软件设计1.3——套接字接口函数.ppt

    `htonl()`, `htons()`, `ntohl()`, `ntohs()`用于在网络字节序(大端字节序)和主机字节序之间转换整数和短整数。 `inet_addr()`将点分十进制的IP字符串转换为二进制IP地址,`inet_ntoa()`则执行相反的转换。 这些...

    高校智慧课堂教学模式的设计与探讨——以《Android嵌入式软件开发》课程为例.pdf

    在教学设计的实施过程中,以项目为切入点,通过任务分析——相关知识——任务实施的思路,将技术融入具体任务中。以《手机通讯录》项目为例,学生在课程中不仅要学会实现联系人的信息存储、查询、导入、删除和修改等...

    软件工程——实践者的研究方法

    - **第21章:面向对象设计** —— 探讨面向对象的设计模式和技术。 - **第22章:面向对象测试** —— 介绍面向对象的测试方法。 - **第23章:面向对象系统的技术度量** —— 分析面向对象系统的度量指标。 5. **...

    人工神经网络原理——入门与应用PDF版

    标题《人工神经网络原理——入门与应用PDF版》所涉及的知识点主要...通过这本《人工神经网络原理——入门与应用PDF版》,初学者能够循序渐进地理解人工神经网络的基本概念、工作原理以及它在多种领域内的实际应用案例。

    PHP高级程序设计_模式、框架与测试(简体中文高清版)

    享有盛誉的PHP高级教程,Zend Framework核心开发人员力作,深入设计模式、PHP标准库和JSON 。  今天,PHP已经是无可争议的Web开发主流语言。PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级...

    单片机——交通灯设计源代码

    总之,这个“单片机——交通灯设计源代码”提供了学习和实践单片机控制应用的宝贵资料。通过对源代码的学习,我们可以了解如何利用单片机进行实时控制、中断处理、定时器编程以及简单的逻辑控制。这对于想要深入理解...

    深入核心——VCL架构剖析.part2

    紧密融合OO理念和设计模式,用OO理念重新考量VCL,指出其中优 秀和不妥之处;让您在了解VCL Framework的同时,体验源自顶尖程 序员的OO观。 <br>http://www.dearbook.com.cn/book/12996<br>

    深入核心——VCL架构剖析.part3

    紧密融合OO理念和设计模式,用OO理念重新考量VCL,指出其中优 秀和不妥之处;让您在了解VCL Framework的同时,体验源自顶尖程 序员的OO观。 <br>http://www.dearbook.com.cn/book/12996<br>

    单片机毕业设计——基于单片机控制的交通灯毕业设计资料.zip

    此时,中断系统就显得尤为重要,它能及时响应外部事件,改变原有的灯序。 6. **调试与测试**:完成硬件组装和软件编程后,需要进行系统调试,检查各个灯的亮灭是否符合预期,同时也要考虑异常情况的处理,如单片机...

    深入核心——VCL架构剖析.part1

    紧密融合OO理念和设计模式,用OO理念重新考量VCL,指出其中优 秀和不妥之处;让您在了解VCL Framework的同时,体验源自顶尖程 序员的OO观。 <br>http://www.dearbook.com.cn/book/12996<br><br>

    戏说面向对象程序设计

    ——聊设计模式原则 第十章............三层架构,分层开发 第十一章...........无熟人难办事?——聊设计模式迪米特法则 第十二章...........有了门面,程序员的程序会更加体面 ...

    面向对象程序设计C#版---.zip

    ——聊设计模式原则 第十章............三层架构,分层开发 第十一章..........无熟人难办事?——聊设计模式迪米特法则 第十二章..........有了门面,程序员的程序会更加体面 第十...

Global site tag (gtag.js) - Google Analytics