﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-横刀天笑的技术空间-随笔分类-设计模式初学者系列</title><link>http://www.cnblogs.com/yuyijq/category/108222.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 05 Aug 2008 22:57:08 GMT</lastBuildDate><pubDate>Tue, 05 Aug 2008 22:57:08 GMT</pubDate><ttl>60</ttl><item><title>在asp.net中实现观察者模式，或有更好的方法（续）</title><link>http://www.cnblogs.com/yuyijq/archive/2008/05/06/1184335.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Mon, 05 May 2008 18:00:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2008/05/06/1184335.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/1184335.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2008/05/06/1184335.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/1184335.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/1184335.html</trackback:ping><description><![CDATA[摘要: &nbsp;写完这个Post后本来想把完整代码实现传上来，后来看到不少园友提出异议，看了大家的留言后我也一直在思索：我为什么这样做？当初我是怎样想到这个解决方案的？我在几个解决方案之间做了取舍了么？我...&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2008/05/06/1184335.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/1184335.html?type=1" width = "1" height = "1" />]]></description></item><item><title>在asp.net中实现观察者模式，或有更好的办法？</title><link>http://www.cnblogs.com/yuyijq/archive/2008/05/02/1179518.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Fri, 02 May 2008 06:30:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2008/05/02/1179518.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/1179518.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2008/05/02/1179518.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/1179518.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/1179518.html</trackback:ping><description><![CDATA[摘要: 继上次设计模式初学者系列后好长时间没有更新了，好不容易休息几天，如是搬来一块砖，放在首页，希望能够引来一些玉。<br><br>设计模式理论上是不管部署环境的，我觉得她是一个代码设计层面上的东西，但是在WinForm里实现的很好的模式，移植到Web环境往往有各种各样的局限性，<br>今天我们要讨论的就是在asp.net中如何去实现一个观察者模式。&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2008/05/02/1179518.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/1179518.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列之代理模式</title><link>http://www.cnblogs.com/yuyijq/archive/2008/02/18/1072381.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Mon, 18 Feb 2008 07:48:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2008/02/18/1072381.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/1072381.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2008/02/18/1072381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/1072381.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/1072381.html</trackback:ping><description><![CDATA[摘要: 看到代理(Proxy)，首先映入大脑中的肯定是网络上为数众多的代理服务器。我们的客户机由于各种原因，不能直接连接到真正的服务器、直接访问速度慢，有的应用中甚至在代理服务器上作权限的访问控制。大部分代理...&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2008/02/18/1072381.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/1072381.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列之状态模式</title><link>http://www.cnblogs.com/yuyijq/archive/2008/01/18/1043871.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Fri, 18 Jan 2008 01:23:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2008/01/18/1043871.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/1043871.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2008/01/18/1043871.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/1043871.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/1043871.html</trackback:ping><description><![CDATA[摘要: 在我们的开发中会经常碰到这样的情况：根据对象的状态执行相应的操作，比如数据库连接的状态 打开，还是关闭？TCP连接的状态(Gof DP)，设备运行的状态，等等。一般我们会怎么做？首先向对象询问当前状态，然后根据状态做出相应的操作。OK，按照这个思路我们就来完成下面这个项目吧。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2008/01/18/1043871.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/1043871.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－策略模式 -------为什么总是继承</title><link>http://www.cnblogs.com/yuyijq/archive/2008/01/14/1038286.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Mon, 14 Jan 2008 06:38:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2008/01/14/1038286.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/1038286.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2008/01/14/1038286.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/1038286.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/1038286.html</trackback:ping><description><![CDATA[摘要: 由于出差，又接近年关，最近一段时间一直没有更新这个设计模式初学者系列，一定要坚持下去，坚持就是胜利。<br><br>策略模式有三种参与者：<br>一、 Context 这个类保存了对策略的引用，并且调用实际的策略实现，有可能还提供一个接口，让策略可以访问它内部的数据，在这里就是我们的“高校”类。<br>二、 Strategy 策略接口，给算法族定义一个通用的接口，让客户以一种一致的方法去访问。（I教务处报到，I缴费）<br>三、 ConcreteStrategy 这就是具体的策略实现了，实现策略接口（各报到步骤的实现）。 &nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2008/01/14/1038286.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/1038286.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－观察者模式</title><link>http://www.cnblogs.com/yuyijq/archive/2007/11/01/945802.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Thu, 01 Nov 2007 07:37:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2007/11/01/945802.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/945802.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2007/11/01/945802.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/945802.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/945802.html</trackback:ping><description><![CDATA[摘要: 观察者模式定义了对象之间一对多的依赖，当这个对象的状态发生改变的时候，多个对象会接受到通知，有机会做出反馈。在运行的时刻可以动态的添加和删除观察者。 <br>在今天的设计模式系列中我给大家带来了观察者模式，首先我会以一个生动的故事引入观察者模式的应用的场景，然后描述这个场景中出现的问题，最后我们提出观察者模式的解决方案，并给出C#语言实现的代码，最后以.net里的委托－事件方式的观察者模式作为结尾。 <br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2007/11/01/945802.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/945802.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－工厂方法</title><link>http://www.cnblogs.com/yuyijq/archive/2007/10/12/921966.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Fri, 12 Oct 2007 02:39:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2007/10/12/921966.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/921966.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2007/10/12/921966.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/921966.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/921966.html</trackback:ping><description><![CDATA[摘要: 闲谈工厂方法<br>     设计模式系列到了第四篇了，如果还不谈谈工厂方法设计模式就太对不起GoF了，为什么有如此一说？实际上工厂方法模式是好些模式的基石，她们或多或少的使用了工厂方法模式或以工厂方法为模型。<br>    工厂方法模式是一种类创建型模式，她为创建一个对象提供了一个稳定的接口，而将对象创建的真正工作推迟到其子类实现，工厂方法允许将类的初始化工作延迟到子类，让子类决定实例化哪个具体的类。实际上很多时候对象的创建工作往往会发生变化，直接的去用new实例化对象会导致紧耦合，当需求发生变化的时候依赖项也会跟着发生变化。按照我们解决这类问题的一般原则：首先寻找变化点――对象创建，然后封装变化――用子类来封装，父类给客户程序提供稳定的接口，不稳定的地方给封装了，客户可见的只有稳定的父类接口，这也是我们面向对象开发人员一直所追求的目标。&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2007/10/12/921966.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/921966.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－模板方法</title><link>http://www.cnblogs.com/yuyijq/archive/2007/10/09/917722.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Tue, 09 Oct 2007 01:04:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2007/10/09/917722.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/917722.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2007/10/09/917722.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/917722.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/917722.html</trackback:ping><description><![CDATA[摘要:  模板方法属于行为型设计模式，行为型设计模式主要关注对象之间职责分配和算法的问题。类行为型模式使用继承来分配类之间的职责，模板方法就是个类行为型模式。对象行为型模式使用组合来分配职责。在我们构建软件的过程中大部分时候我们都是在思考实体之间的职责，怎样的职责分配最合理，不至于过重，又不至于过轻，而且又不越权。<br>       模板方法Gof的定义是：在一个方法里定义算法的骨架，将一些步骤延迟到其子类。模板方法使得子类有机会重新定义算法的某些步骤而不改变算法的结构。模板方法实际上是利用多态这种晚绑定机制来将一些执行系列延迟到子类(运行时)。如下图： &nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2007/10/09/917722.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/917722.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－单件模式</title><link>http://www.cnblogs.com/yuyijq/archive/2007/10/07/915941.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Sun, 07 Oct 2007 04:04:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2007/10/07/915941.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/915941.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2007/10/07/915941.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/915941.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/915941.html</trackback:ping><description><![CDATA[摘要: 在一个系统中，往往有一些服务只需要它们在整个系统中存在一个实例，并且在系统的任何角落都可以访问它。这样，单件模式出现了。比如在上一篇抽象工厂模式中，在一个系统中往往只有一个工厂，这样我们可以引入单件模式来解决这个问题。 <br><br>对于单件模式的定义是：只允许系统中有一个实例存在，并且为该实例提供一个全局的访问点&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2007/10/07/915941.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/915941.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－开篇以及抽象工厂模式</title><link>http://www.cnblogs.com/yuyijq/archive/2007/10/06/915185.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Sat, 06 Oct 2007 02:35:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2007/10/06/915185.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/915185.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2007/10/06/915185.html#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/915185.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/915185.html</trackback:ping><description><![CDATA[摘要: 抽象工厂模式的使用场景 <br><br>今天要谈的抽象工厂模式属于对象创建型模式。 <br><br>    创建型模式抽象了对象实例化的过程，它帮助系统不依赖于对象如何创建，如何实现，何时创建。个类创建型模式使用继承使对象创建多样化，一个对象创建模式将对象的创建代理到其他类。 <br><br>    那抽象工厂模式是为了解决什么问题的呢？给了我们怎样的设计思路？在软件开发中我们经常会碰到一系列相关的对象需要创建，如果按照常规做法我们就要为不同的对象创建编写不同的代码，复用性和可维护性都降低了。而且这些相关对象创建的方式也许不同，那么客户代码创建的时候就要针对不同的对象编码，对象创建的方式还是一个容易改变的地方。基于这样的情况提出了抽象工厂模式，抽象工厂模式为创建一系列相关对象提供了统一的接口，客户只要调用这个接口即可，封装了变化，隔离了变化，让客户代码稳定起来。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2007/10/06/915185.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/915185.html?type=1" width = "1" height = "1" />]]></description></item><item><title>设计模式初学者系列－引子</title><link>http://www.cnblogs.com/yuyijq/archive/2007/10/06/915138.html</link><dc:creator>横刀天笑</dc:creator><author>横刀天笑</author><pubDate>Sat, 06 Oct 2007 02:34:00 GMT</pubDate><guid>http://www.cnblogs.com/yuyijq/archive/2007/10/06/915138.html</guid><wfw:comment>http://www.cnblogs.com/yuyijq/comments/915138.html</wfw:comment><comments>http://www.cnblogs.com/yuyijq/archive/2007/10/06/915138.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cnblogs.com/yuyijq/comments/commentRss/915138.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yuyijq/services/trackbacks/915138.html</trackback:ping><description><![CDATA[摘要: 园子里有很多经典的设计模式系列的文章，本也不需要我这多余的一个系列，不过也许不多我这多余的系列吧。在工作学习之余做了一些设计模式的笔记，无奈都是我一个人看，一直也不敢拿出来献丑，但想了想，知识...&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuyijq/archive/2007/10/06/915138.html'>阅读全文</a><img src ="http://www.cnblogs.com/yuyijq/aggbug/915138.html?type=1" width = "1" height = "1" />]]></description></item></channel></rss>