项目末期,不算忙,花了将近一个月的时间,终于把《设计模式》认真仔细学习了一下。
Experienced object-oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time. Before a design is finished, they usually try to reuse it several
times, modifying it each time.
感悟:好的代码一定是经过千锤百炼,在一遍遍的重构过程中,去其糟粕取其精华后提炼得到的。
而我现在所在的项目组,为了不出bug,领导却一再强调尽量不要改动代码,没有给出时间做review,refactoring。果然,到了项目末期,
改一个bug出两个的“美好”时代到来了,加班费赚着了,却接不着新项目了,公司的level也只能取决与领导的眼界了。
The core of both kinds of patterns is a solution to a problem in a context.
The design patterns in this book are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.
Christopher Alexander 才是设计模式的祖师爷,建筑专业的同学应该挺膜拜此人的吧?
(1) AbstractFactory 抽象工厂
生产一系列产品(families of products)
(2) Adapter 适配器
改变现存类的接口,分为两种 class adapter和object adapter
android中的adpter属于object adapter。
(3) Bridge 桥接
抽先与实现分离。
(4) Builder 生成器
一步一步(step by step)地去生产一个产品,生产细节是隐藏的。
android中的AlertDialog.Builder应该是退化的builder模式。
(5) Chain of Responsibility 责任链
消息传递机制就是它了
(6) Command 命令
把请求封装成对象,通过继承生成不同的对象,不改变接口的情况下,传递不同的命令,实现不同的功能。
(7) Composite 组合
分形,局部自相似性
(8) Decorator 装饰
动态添加功能
(9) Facade 外观
将多subsystem整合成一个类
(10) Factory Method 工厂方法
产生一个产品,可以将初始化动作推迟到子类,注意与Abstract Factory的区别,不过二者经常一起使用。
(11) Flyweight 享元 (不知道为什么翻译成这个中文名)
我理解的意思就是轻量级,可以将许多元素抽象出来形成类 。
这个设计思想再游戏设计中应该很常用。
(12) Interpreter (解释器)
根据给出的规则去解析一段内荣
(13) Iterator (迭代器)
在容器中可以通用的遍历模式
(14) Mediator (中介者)
中央处理器
(15) Memento (备忘录)
不破坏封装性,将对象内部状态存储在外部。
(16) Observer (观察者)
最典型用法是MVC模式,当时subject跟observer之间可以是one-to-many也可以是many-to-many,
跟Memento的最大区别是两者的intent不同,Observer是为了保证所有的observers的一致性。
(17) Prototype (原型)
防止出现继承爆炸
(18) Proxy (代理)
监护人的角色,提别人做决定。跟adapter是不同的,adapter是改变interface,proxy是控制interface
(19) Singleton (单例)
只有一个实例存在,避免使用全局变量的一个很好的方案。
(20) State(状态)
通过状态来控制对象的动作,而状态的转换对对象可能是透明的。
(21) Strategy 策略
存在一组相同同能的算法,也就是family of algorithms,把每一个算法封装以后,他们之间可以相互交换。
这个是模式实际上是把算法抽象成一个物体,所以factory method和abstract factory都可以结合其来一起使用。
(22) Template Method 模板方法
先定义一个算法,步骤抽象,将具体实现推迟到子类,
这个模式在继承多态的时候肯定要用到。
(23) Visitor (访问者)
给对象体系结构开了个后门,可以做你喜欢的事情哦。
分享到:
相关推荐
设计模式精解- GoF 23种设计模式解析附C++实现源码 懂了设计模式,你就懂了面向对象分析和...想想当时读GoF的那本圣经时候的苦闷、实现23个模式时候的探索、悟道后的欣悦,我觉得还是有这懂了设计模式,个意义。 侵删
写完了Interpreter模式之后,我习惯性的看看下一天的安排,却陡然发现GoF的23个设计模式的解析已经在我不经意间写完了。就像在一年前看GoF的《设计模式》一书,和半年前用C++模拟、实现23种经典的设计模式一般,透过...
设计模式精解-GoF 23种设计模式解析.pdf
设计模式精解-GoF-23种设计模式解析--附C++源代码,帮助理解!
设计模式精解-GoF23种设计模式解析(附C++实现源码)
23种设计模式UML类图,以及相应的源码,文档,自己找过的,查阅过的网上的资料
懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不...
PDF高清教程 + 23个模式的源码 + lexi 编辑器源码 很好很强大
GoF的《设计模式》是所有面向对象语言(C++ Java C#)的基础,只不过不同的语言将之实现得更方便地使用。 GOF的设计模式是一座"桥" 。就Java语言体系来说,GOF的设计模式是Java基础知识和J2EE框架知识之间一座隐性的...
GOF23种经典设计模式中文版 学习设计模式的必备书籍
GOF 设计模式 中文 高清 经典书籍 值得拥有 带目录 适合进阶
设计模式精解-GoF23种设计模式解析附C++实现源码,是系统学习设计模式,深入理解每种模式的原型,优缺点,适用的场景,达到灵活运用目的的最好参考书
懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成 立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在项目中的应用经历拿出来和大家共享,却总是下不了这 ...
学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料
设计模式精解-GoF 23种设计模式解析附C++实现源码
设计模式——GoF的23中设计模式幽默案例解析
GOF的23个设计模式
本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...