标签: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