码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式基础

时间:2019-02-13 00:44:12      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:single   man   发展   享元模式   建筑   实验   ret   验证   上市   

设计模式的概念

? 设计模式是:在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案(5点)

案例

?用大家身边的例子来说,比如医药行业,就有自己的设计模式。假设一个人感冒了,到药店买点感冒药来吃,这个感冒药就是设计模式的一个很好体现

经过验证的:药品上市前,会有大量的验证和实验,以保证药品的安全性

特定环境下:这些药品是针对人的,不是针对其它动物的

重复出现的:正是因为感冒会重复出现,研制药品才是有意义的

特定问题:感冒药只用来解决感冒问题,不能解决其它问题,比如脚痛

解决方案:药品本身就是个解决方案的具体体现

? 经过上面的比较,你会发现,医药行业对设计模式的体现,一点不逊色于软件行业。事实上,很多行业都有自己的设计模式。就算设计模式本身也不是起源于软件行业,而是起源于建筑业

设计模式的理解

1:设计模式是解决某些问题的办法

2:设计模式不是凭空想出来的,是经验的积累和总结

3:设计模式并不是一成不变的,而是在不断的发展中

4:设计模式并不是软件行业独有的,各行各业都有自己的设计模式

设计模式的组成

在描述一个设计模式的时候,通常会有如下部分:

1:模式名称:就是为每个设计模式取个名字,好记忆,也好交流

2:环境和问题:描述在什么场景下,出现什么样的特定的问题

3:解决方案:描述如何解决这个问题

4:效果:描述模式应用的效果,以及可能带来的问题,或者使用中需要权衡的问题

设计模式的分类

? 为了缩小范围,我们仅讨论Java设计模式,也就是GoF著作《设计模式——可复用面向对象软件的基础》中提到的23个设计模式。对于这23个设计模式的分类,GoF把它们分为三类:

1:创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例

? 简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)

? 建造者模式(Builder)原型模式(Prototype)单例模式(Singleton)

2:结构型模式:描述如何组合类和对象以获得更大的结构

? 适配器模式(Adapter)外观模式(Facade)桥接模式(Bridge)装饰器模式(Decorator)

? 代理模式(Proxy)享元模式(Flyweight)组合模式(Composite)

3:行为型模式:描述算法和对象间职责的分配

? 模板方法模式(Template Method)策略模式(Strategy)命令模式(Command)中介者模(Mediator)

? 观察者模式(Observer)迭代器模式(Iteratior)访问者模式(Visiter)

? 责任链模式(Chain of Responsibility)备忘录模式(Memento)状态模式(State)

? 解释器模式(Interpreter)

设计模式和面向对象设计原则

? 面向对象的分析设计有很多原则,这些原则大都从思想层面,给我们指出了面向对象分析设计的正确方向,是我们进行面向对象分析设计应该尽力遵守的准则。

? 而设计模式已经是针对某个场景下某些问题的某个解决方案。也就是说这些设计原则是思想上的指导,而设计模式是实现上的手段,因此设计模式也是应该遵守这些原则的,换句话说,设计模式就是这些设计原则的一些具体体现

设计模式和重构

1:设计模式是重构的目标,重构是达到目标的手段

2:重构并不排斥提前设计,重构并不是不需要设计

3:合理的提前设计 + 重构来不断的改进设计 ==〉趋近于优秀的系统

为什么要学习设计模式

1:软件开发越来越复杂,对软件设计的要求也越来越高,而软件设计和架构的入门功夫就是深入理解和掌握设计模式,因此,设计模式的重要性不言而喻。

2:设计模式已经成为软件开发人员的“标准词汇”

3:学习设计模式是个人提高的捷径

4:不用重复发明轮子

设计模式基础

标签:single   man   发展   享元模式   建筑   实验   ret   验证   上市   

原文地址:https://www.cnblogs.com/weixiaotao/p/10367526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!