锁定老帖子 主题:设计模式之《松本行弘的程序世界》的读书笔记
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-08
最后修改:2011-09-15
<直接从Evernote中复制出来,格式不是很好看>
阅读《松本行弘的程序世界》:http://book.51cto.com/art/201108/284603.htm
设计模式原本是从面向对象的代码中总结出来的,但是现在的编程语言往往在语法级别就封装了一些常用的设计模式支持。
设计模式和具体编程语言无关,但是设计模式在各个具体语言里面的使用方法不尽相同。
面向对象的软件开发中有很多普遍存在的原则(Principle),在设计以及开发面向对象程序的时候,就应该遵循以下抽象原则:
我们的目标是使代码符合上面的这些原则,这是目的。我们如何达到这个目的呢?那就是使用设计模式,这是手段。目的比手段更抽象,也即原则比设计模式抽象程度更高。
设计模式可以分成3大类:有关生成的模式(5个),有关构造的模式(7个),有关行为的模式(11个)。
1. Singleton 单例模式 (生成)
说明:保证某个类的实例只有一个
为什么:系统全体只需要唯一一个这个对象
如何做:
总结:反正不管用什么手段,必须只有一个实例!必须的! 2. Proxy 模式 (构造)
3. Iterator 模式 (行为)
内部迭代器的缺陷:不能同时进行多个循环,也就无法实现按顺序比较2个集合元素的处理。所以返回外部迭代器也有它的优势!比较优秀的是内外部无缝集成。感觉上Ruby偏向于内部迭代,Python更偏向于语法级别的自然外部迭代。 4.Prototype (单词解释the first example of something, such as a machine or other industrial product, from which all later forms are developed)
5. Template Method 模板方法 (为了编写抽象算法的模式) 说明:在父类的一个方法中定义算法的框架,其中几个步骤的具体内容则留给子类来实现。
为什么:1. 可以在不改变算法构造的前提下,在子类中定义算法的一些步骤。
6. Observer 模式 (避免高度依赖)
说明:当某个对象的状态发生变化时,依存于该状态的全部对象都自动(被动)得到通知,而且为了让他们都得到更新,定义了 对象间的一对多的依存关系。这是控制类与类之间依存关系的一种模式。
7. Strategy 模式
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-13
congdepeng 写道
<在Evernote写笔记,直接从Evernote中复制出来,格式有所偏差>
阅读《松本行弘的程序世界》:http://book.51cto.com/art/201108/284603.htm
设计模式原本是从面向对象的代码中总结出来的,但是现在的编程语言往往在语法级别就封装了一些常用的设计模式支持。
设计模式和具体编程语言无关,但是设计模式在各个具体语言里面的使用方法不尽相同。
面向对象的软件开发中有很多普遍存在的原则(Principle),在设计以及开发面向对象程序的时候,就应该遵循以下抽象原则:
我们的目标是使代码符合上面的这些原则,这是目的。我们如何达到这个目的呢?那就是使用设计模式,这是手段。目的比手段更抽象,也即原则比设计模式抽象程度更高。
设计模式可以分成3大类:有关生成的模式(5个),有关构造的模式(7个),有关行为的模式(11个)。
1. Singleton 单例模式 (生成)
说明:保证某个类的实例只有一个
为什么:系统全体只需要唯一一个这个对象
如何做:
总结:反正不管用什么手段,必须只有一个实例!必须的! 2. Proxy 模式 (构造)
3. Iterator 模式 (行为)
内部迭代器的缺陷:不能同时进行多个循环,也就无法实现按顺序比较2个集合元素的处理。所以返回外部迭代器也有它的优势!比较优秀的是内外部无缝集成。感觉上Ruby偏向于内部迭代,Python更偏向于语法级别的自然外部迭代。 4.Prototype (单词解释the first example of something, such as a machine or other industrial product, from which all later forms are developed)
5. Template Method 模板方法 (为了编写抽象算法的模式) 说明:在父类的一个方法中定义算法的框架,其中几个步骤的具体内容则留给子类来实现。
为什么:1. 可以在不改变算法构造的前提下,在子类中定义算法的一些步骤。
6. Observer 模式 (避免高度依赖)
说明:当某个对象的状态发生变化时,依存于该状态的全部对象都自动(被动)得到通知,而且为了让他们都得到更新,定义了 对象间的一对多的依存关系。这是控制类与类之间依存关系的一种模式。
7. Strategy 模式
|
|
返回顶楼 | |
发表时间:2011-09-14
楼主没买实体书吧,样章就有第一章和设计模式这章可以读,哈哈
|
|
返回顶楼 | |
发表时间:2011-09-14
还有没有?期待您接下来的分享
|
|
返回顶楼 | |
发表时间:2011-09-14
yuanyu5237 写道 楼主没买实体书吧,样章就有第一章和设计模式这章可以读,哈哈
哈哈是啊 我还没买书 我主要学习Py |
|
返回顶楼 | |
发表时间:2011-09-15
最后修改:2011-09-15
设计模式就是遵循代码开发原则衍生的,只要原则握准了,设计模式这东西就算不懂也信手拈来
|
|
返回顶楼 | |
发表时间:2011-09-20
看完后,决定买了本实体书
|
|
返回顶楼 | |
发表时间:2011-09-21
最后修改:2011-09-21
我也买了,感觉还可以。看了下正则那部分的处理,回去用Ruby试了下,发现Ruby中的正则和Java、JS中的正则有点不太一样。在java和js中参数M是多行匹配模式,^和$在多行匹配模式下匹配每行的开始和结束,但ruby中则正好相反。还有这个表达式/^[\S\s]*?$/在
Java和JS中内购匹配整个字符串,但ruby中不管是/^[\S\s]*?$/还是/^[\S\s]*?$/m都无法做到匹配一个含有多个换行符整个字符串。这点很让人郁闷。还有一点就是感觉ruby的语法糖比较多像%r{} %w %s等,常常让新手不知所措 |
|
返回顶楼 | |
发表时间:2011-09-21
我也买了,在豆瓣上评分还挺高的
回来后才发现是肉饼写的序…… |
|
返回顶楼 | |
发表时间:2011-09-24
iaimstar 写道 设计模式就是遵循代码开发原则衍生的,只要原则握准了,设计模式这东西就算不懂也信手拈来
我对原则的理解就是不重复逻辑。 |
|
返回顶楼 | |