随笔 - 268  文章 - 0  评论 - 1028  阅读 - 160万

随笔分类 -  design pattern

c#设计模式
形象工程:创建型设计模式总结
摘要:前言:早已断断续续把23种设计模式学习了一遍,可是实际运用的不是很理想。如果刻意用设计模式,你会发现一个很小的项目,很小的功能其实处处都是可以按标准模式去编码的,这个也许就是所谓的过度设计的问题;而不用设计模式,代码又写得愚蠢臃肿,除了堆砌代码实现功能之外你看不到程序更别提思想上的一丝闪光点。也许正像网上很多人说的那样,到一定境界自动就会高效运用到项目中去了。当然现在也不能放弃学习它,下面就把创建... 阅读全文
posted @ 2009-07-05 19:02 JeffWong 阅读(622) 评论(0) 推荐(0) 编辑
“一个都不能少”:迭代器模式
摘要:1、迭代器模式:提供一种方法顺序访问一个集合对象中各个元素,而又不暴露该对象的内部表示。这是它的结构图:2、迭代器模式应用场合:当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,可以考虑使用该模式。举个不恰当的例子,个人认为杀毒软件在遍历文件夹“排查”杀毒时可以认为是一个典型的迭代器模式的运用。因为当我们设置杀毒软件进行查杀病毒时,不管我们设置查杀文件类型为普... 阅读全文
posted @ 2009-06-25 20:33 JeffWong 阅读(561) 评论(0) 推荐(0) 编辑
“变化的流水线”:建造者模式
摘要:在软件系统中,有时面临着一个复杂对象的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何提供一种"封装机制"来隔离出"各个部分"的变化,从而保持系统中的"稳定构建算法"不随需求的改变而改变?建造者(Builder)模式也叫生成器模式。用它来创建对象,目的是省去在对象发生变化时,需要修改代码中每一... 阅读全文
posted @ 2009-05-29 13:40 JeffWong 阅读(616) 评论(2) 推荐(0) 编辑
好像是一回事:适配器和代理模式
摘要:1、适配器模式。“适配器”,顾名思义,就是将一个类的接口转换成另外一个接口,使得原本由于接口不兼容不能一起工作的那些类一起工作。在软件开发中,系统的数据和行为都正确,但接口不符时,我们应该考虑适配器。举例来说,我们高中都学习过中文版的《论语》(里的几段著名的话),假如现在到了大学后,英语老师要我们学英文版的《论语》,以前学中文版的时候是看中文书,现在学英文版的,当然要看英文... 阅读全文
posted @ 2009-04-14 18:38 JeffWong 阅读(2319) 评论(0) 推荐(0) 编辑
合成/聚合原则: 桥接模式
摘要:假想场景:hp和apple是全球知名的电脑生产厂家,起初他们各自的电脑操作系统分别是linux和macintosh,microsoft是软件行业的龙头。为了吸引更多客户购买电脑,hp和apple请ms为他们开发两款最常用的软件,办公软件和及时通讯工具。ms结了订单后,分别为hp和apple开发了office和msn。随着微软windows操作系统的大面积普及,hp的linux和apple的mac使... 阅读全文
posted @ 2009-04-13 20:12 JeffWong 阅读(811) 评论(0) 推荐(0) 编辑
知根知底,坚持原则:设计模式的主要设计原则简介
摘要:1.单一职责原则(SRP)“单一职责模式”按照字面理解就是,一个类的功能要“单一”或者专一,不能武断地把很多相关或者不相关的功能强制写进一个类里去,它的准确解释是:“就一个类,应该仅有一个引起它变化的原因”。我个人认为这个原则主要就是教我们如何抽象并“封装”类。举例:对于初学者来说,我们几乎都写过的代码... 阅读全文
posted @ 2009-04-11 10:37 JeffWong 阅读(673) 评论(0) 推荐(0) 编辑
这是传说,必须迷恋它:观察者模式
摘要:观察者模式又叫发布-订阅模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。从上面的描述中,我们可以抽象出主题Subject类和观察者Observer类,”一对多“的关系告诉我们,观察者可以有多个,而主题只有一个。主题有一个很有趣的东西叫”状态“,因为... 阅读全文
posted @ 2009-04-03 20:58 JeffWong 阅读(635) 评论(0) 推荐(0) 编辑
看上去很美:外观模式
摘要:在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。举例来说,比如利用传统的三层结构,我们开发了一个客户订单管理系统,数据库表包括主要客户表,订单表,产品表。在该应用程序中,有部分操作只是简单的从数据库根据条件提取数据,不需要经过任何处理,而直接将数据显示到网页上,比如客户登陆显示等级和积分。而另外一些操作,比如客户预定定单中计算购买产品的总价... 阅读全文
posted @ 2009-03-28 12:24 JeffWong 阅读(536) 评论(0) 推荐(0) 编辑
左右逢源:策略模式
摘要:策略模式:它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。举一个示例来说:一个代理机票系统,普通用户和vip用户都可以有三种预定和支付方式。按照普通的编程思路,用工厂方法或者简单工厂,在两种用户的对应类里添加设置用户预定和支付的方法就可以了,这样确实也可以解决问题。但是,如果我们的系统需求发生改变(这个经常吧?!),比如说支付和预定方式都增加了... 阅读全文
posted @ 2009-03-25 20:10 JeffWong 阅读(628) 评论(0) 推荐(0) 编辑
学习生活要远离它:模板方法模式
摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术.最近频上各大论坛头条的某高校某女生抨击教育事件,让很多人对我国的大中学生的教育普通存在的问题产生共鸣,这些个问题可以很好的阐释这个模式的应用。好了,code is cheap。让代码说话。类图:代码如下:[代码]总结:1.模板方法用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码... 阅读全文
posted @ 2009-03-25 19:22 JeffWong 阅读(499) 评论(0) 推荐(0) 编辑
工业化生产:简单工厂、工厂方法和抽象工厂模式
摘要:假想场景:hp和apple是全球知名的电脑生产厂家,他们各自的电脑操作系统分别是windows和macintosh,microsoft是软件行业的龙头。为了吸引更多客户购买电脑,hp和apple请ms为他们开发两款最常用的软件,办公软件和及时通讯工具。ms结了订单后,分别为hp和apple开发了office和msn。上面的场景其实蕴含着我们常见的设计模式思维方式,code is cheap,代码来... 阅读全文
posted @ 2009-03-15 10:10 JeffWong 阅读(943) 评论(3) 推荐(1) 编辑
保证一个类仅有一个实例:单例模式
摘要:场景:微软的windows xp操作系统,ctrl+alt+del键都会弹出一个windows任务管理器(这时不关闭这个任务管理器),继续ctrl+alt+del键还是一个windows任务管理器。鉴于本人水平有限,上面的场景举例可能不合适,但是很接近一个基本的设计模式:单例模式。Code is cheap.下面用c#代码模拟出一个类似任务管理器的创建: Code Code highlightin... 阅读全文
posted @ 2009-03-14 14:46 JeffWong 阅读(2540) 评论(1) 推荐(1) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

I know how to make it works and I want to know how it works.
点击右上角即可分享
微信分享提示