设计模式简介
来源:互联网 发布:大旗软件 编辑:程序博客网 时间:2024/05/23 09:54
原文链接: 设计模式简介
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。
从书的名字来看,这是面向对象软件设计中使用的,并且是可以反复使用的,最后一点是元素,不是组件,不是工具,说明它不是独立存在的。而最后翻译为设计模式也可以体现出这东西只是用于在代码编写过程的一种可靠的编程思想。
然而,用意是好的,结果却不一定。我们随处可见各路大虾对设计模式进行讥讽和嘲笑,而这些指责并非是毫无来由的。
诺贝尔发明黄色炸药的时候也没有想过后来这会被用于战争,而编程世界里的过度设计无疑就是像引起战争的炸药。假如写个hello world需要写上个MVC模式以显其高端,hello world还会成为经典吗?我相信没几个初学者会有信心学下去。设计模式再给我们带来一种解决问题的方案的同时,也同时引进了代码的复杂性,而有时这种复杂性甚至大于设计带来的好处。
但这就证明了设计模式无用吗?显然也不是。好钢要用在刀刃上,当我们在一个方法里写了一大堆的if else,并且在多个版本迭代过程中这里被反复更新的时候;当我们在整合第三方接口,发现什么乱七八糟的接口标准都有的时候;当我们需要给类增加一些辅助功能,但用继承又难以实现的时候,我们可能就会想方设法去用一些技巧来改善或重构我们的代码,以增加我们的喝茶时间。而这些思路,可能无意间契合了早就被前人总结出来的设计模式中(这也是大多数人说设计模式没用的理由之一——看,这个代码改成这样,那个接口改造一下,对,这个对象从那个类里生成,完美,别跟我谈设计模式,我会写代码)但所谓技多不压身,既然前人都总结出来了,经过多年发展,思想上肯定是比我们临时想出来的成熟且成功,必须得借鉴引用啊,什么cross over, 后撤步,欧洲步,迷踪步,学起来啊。
所以设计模式只是一套方法论,武功秘籍都算不上,学会了绝对称霸不了武林,但作用至少有二,一是能够帮助我们解决一定的编程设计问题,而这些设计理论是经过实践确实可行的;二是帮助我们理解开源代码——开源代码千锤百炼,一大堆设计思想运用其中,只是阅读代码层面恐怕很难抽丝剥茧,而如果是从架构、抽象逻辑方面结合设计模式去看,你会发现一切尽在不言中,而阅读开源代码无疑又是成为高手的必经之路,所以你还在等什么,只需要998,只需要998,走过路过千万不要错过~
咳咳,闲话不多说,还是来看看前人都总结出了哪些设计模式。
- 工厂模式(Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 单例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
- 适配器模式(Adapter Pattern)
- 桥接模式(Bridge Pattern)
- 过滤器模式(Filter、Criteria Pattern)
- 组合模式(Composite Pattern)
- 装饰器模式(Decorator Pattern)
- 外观模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
- 责任链模式(Chain of Responsibility Pattern)
- 命令模式(Command Pattern)
- 解释器模式(Interpreter Pattern)
- 迭代器模式(Iterator Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 观察者模式(Observer Pattern)
- 状态模式(State Pattern)
- 空对象模式(Null Object Pattern)
- 策略模式(Strategy Pattern)
- 过滤器模式(Filter、Criteria Pattern)
- 模板模式(Template Pattern)
- 访问者模式(Visitor Pattern)
果然是新人看到会流泪,老鸟瞧见也懵逼啊!这么多设计模式,装逼的吧,怎么感觉是同一个东西搞来搞去骗流量啊!少年,你的直觉果然不同凡响啊!细想一下,细节决定成败啊。同样是物理攻击,什么时候A小兵,什么时候A地板,什么时候hit and run,很讲究好不好!
更加让人崩溃的是,还有一大堆设计原则要讲,什么开闭原则啊,依赖倒转原则啊,看完我们就晕了好吧!所以还是慢慢来吧,让我们一个个看看设计模式都玩些什么把戏。为了挖掘更多有技术含量的槽点,我们要开始认真了。
- 设计模式简介
- 常见设计模式简介...
- 设计模式简介
- GOF23设计模式简介
- 设计模式简介
- 设计模式简介
- 设计模式简介
- 设计模式简介
- 设计模式简介
- MVC设计模式简介
- 设计模式简介
- GoF设计模式简介
- 设计模式简介
- MVC设计模式简介
- GoF设计模式简介
- 设计模式简介
- 设计模式简介
- 设计模式简介
- 编程题#6 MyString 求大神解答
- java URL、HTTP与HTML+CSS
- maven 手动安装
- js切割url后面?字符串方法
- 待学习&复习的内容
- 设计模式简介
- Excel的基础操作
- mysql 多表更新
- PHP中MySQL、MySQLi和PDO的用法和区别
- 关于gridview多item选中放大问题。
- 容斥原理
- 两种基于AOP的日志管理方法(springboot)
- Storm架构
- HDR技术研究之Radiometric Self Calibration