<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[乘风破浪]]></title><description><![CDATA[想出精彩的代码要比看到精彩的代码更加令人兴奋]]></description><link>https://blog.youkuaiyun.com/gsfw2010</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gsfw2010]]></copyright><item><title><![CDATA[SRP：单一职责原则]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7467550</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7467550</guid><author>gsfw2010</author><pubDate>Mon, 16 Apr 2012 22:09:45 +0800</pubDate><description><![CDATA[SRP：单一职责原则
1.定义：一个类应该只有一个发生变化的原因。
 
2.分析：如果一个累承担了多于一个的职责，那么引起它变化的原因就会有多个，就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计，当变化发生时，设计会遭到意想不到的破坏。
 
3.定义职责：在SRP中，我们把职责定义为变化的原因，如果你能想到多于一个的动机去改]]></description><category></category></item><item><title><![CDATA[敏捷软件开发]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7467283</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7467283</guid><author>gsfw2010</author><pubDate>Mon, 16 Apr 2012 20:56:23 +0800</pubDate><description><![CDATA[前段时间进许了设计模式的学习，收获挺多的。
接下来学习敏捷软件开发（原则、模式与实践），继续加强设计模式的学习，了解软件设计原则，并通过一个案例将
设计原则和设计模式运用到真实的项目当中去。
备注：
（1）参考书籍《敏捷软件开发--原则、模式与实践C#版》Bob大师所著
（2）博客中的设计和案例都来自于参考书籍，主要是为了加强理解和记忆。

努力，努力，再努力！]]></description><category></category></item><item><title><![CDATA[中介者模式（Mediator Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7455805</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7455805</guid><author>gsfw2010</author><pubDate>Thu, 12 Apr 2012 22:17:04 +0800</pubDate><description><![CDATA[中介者模式（Mediator Pattern）
用一个中介者对象来封装一系列对象交互。中介者使得各对象不需要相互引用，从而使其耦合松散，而且可以
独立的改变它们之间的交互。

依赖关系的转化

 
动机(Motivate):
     在软件构建过程中，经常会出现多个对象互相关联交互的情况，对象之间常常会维持一种复杂的引用关系，
  如果遇到一些需求的更改，这种直接的引用关系将面]]></description><category></category></item><item><title><![CDATA[职责链模式（Chain Of Responsibility）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7447413</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7447413</guid><author>gsfw2010</author><pubDate>Tue, 10 Apr 2012 22:19:32 +0800</pubDate><description><![CDATA[职责链模式（Chain Of Responsibility）
动机(Motivate)：
    在软件构建过程中，一个请求可能被多个对象处理，但是每个请求在运行时只能有一个接受者，如果显示指定，
 将必不可少地带来请求发送者与接受者的紧耦合。
    如何使请求的发送者不需要指定具体的接受者？让请求的接受者自己在运行时决定来处理请求，从而使两者解耦。
意图(Intent)：]]></description><category></category></item><item><title><![CDATA[命令模式（Command Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7447399</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7447399</guid><author>gsfw2010</author><pubDate>Tue, 10 Apr 2012 22:16:37 +0800</pubDate><description><![CDATA[命令模式（Command Pattern）
将一个请求封装为一个对象，从而使你可用不同的请求对客户进许参数化；对请求排队或记录请求日志，
以及支持撤销的操作。
 

/// 
    /// Command类：抽象命令类，类中只需要确定命令最终执行者Receiver即可
    /// 声明执行操作的接口
    /// 
    abstract class Command]]></description><category></category></item><item><title><![CDATA[桥接模式（Bride Pattern）:]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7433948</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7433948</guid><author>gsfw2010</author><pubDate>Fri, 06 Apr 2012 22:18:18 +0800</pubDate><description><![CDATA[桥接模式（Bride Pattern）:
将抽象部分与它的实现部分分离开来，使它们都可以独立的变化。
 

/// 
    /// 抽象实现类
    /// 
    abstract class Implementor
    {
        public abstract void Operation();
    }
    /// 
    /// 具体实现]]></description><category></category></item><item><title><![CDATA[单例模式（Sigleton Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7433931</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7433931</guid><author>gsfw2010</author><pubDate>Fri, 06 Apr 2012 22:15:53 +0800</pubDate><description><![CDATA[单例模式（Sigleton Pattern）：
保证一个类仅有一个实例，并提供一个访问它的全局访问点。
通常我们可以让一个全局变量使得一个对象被访问，但它不能纺织你实例化多个对象，
一个最好的办法就是，让类自身负责保存它的唯一实例。这个类可以保证没有其它实例
可以被创建，并且它可以提供一个访问该实例的方法。

 
public class Sigleton
    {]]></description><category></category></item><item><title><![CDATA[组合模式（Composite Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7405123</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7405123</guid><author>gsfw2010</author><pubDate>Wed, 28 Mar 2012 22:51:31 +0800</pubDate><description><![CDATA[组合模式（Composite Pattern）：
将对象组合成树形结构以表示“部分”-“整体”的层次结构。组合模式使得用户对单个对象的处理和组合复杂的对象处理
具有一致性。
/// 
    /// Component为组合对象声明接口，在适当的情况下，实现所有类共有接口的默认行为。
    /// 声明一个接口用于访问和管理Component的子部件
    /// 
    ab]]></description><category></category></item><item><title><![CDATA[状态模式（State Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7400950</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7400950</guid><author>gsfw2010</author><pubDate>Tue, 27 Mar 2012 22:31:56 +0800</pubDate><description><![CDATA[状态模式（State Pattern）：
当一个对象的内在状态变化时允许改变其行为，这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态转换的条件过于复杂时的情况。把状态的判断逻辑移到表示
不同状态的一系列类当中，可以把复杂的判断逻辑简单化。
/// 
    /// 抽象状态类，定义一个接口以封装与Context的一个特定状态相关的行为
    /// 包含Cont]]></description><category></category></item><item><title><![CDATA[适配器模式（Adapter Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7400943</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7400943</guid><author>gsfw2010</author><pubDate>Tue, 27 Mar 2012 22:29:31 +0800</pubDate><description><![CDATA[适配器模式（Adapter Pattern）:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的
那些类可以一起工作。
/// 
    /// Target类：这是客户所期待的接口。目标可以是具体的或抽象的类，也可以是接口。
    /// 
    public class Target
    {
        publi]]></description><category></category></item><item><title><![CDATA[备忘录模式(Memento Pattern)]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7400933</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7400933</guid><author>gsfw2010</author><pubDate>Tue, 27 Mar 2012 22:27:37 +0800</pubDate><description><![CDATA[备忘录模式(Memento Pattern)：
在不破环封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可以将该对象回复到
保存前的状态。
/// 
    /// Originator：负责创建一个备忘录（Memento）,用以记录当前时刻它的内部状态，并可以使用备忘录回复
    /// 内部状态。Originator可根据需要决定Memento存储Or]]></description><category></category></item><item><title><![CDATA[抽象工厂模式(Abstract Factory Pattern)]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7381313</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7381313</guid><author>gsfw2010</author><pubDate>Wed, 21 Mar 2012 23:09:43 +0800</pubDate><description><![CDATA[抽象工厂模式(Abstract Factory Pattern)：
提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。
AbstractFactory：抽象工厂。声明生成抽象产品的方法
ConcreteFactory：具体工厂。执行生成抽象产品的方法，生成一个具体的产品。
AbstractProduct：抽象产品。为一种产品声明接口。
Product：具体产品类。定义具]]></description><category></category></item><item><title><![CDATA[观察者模式(Observer Pattern)]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7381299</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7381299</guid><author>gsfw2010</author><pubDate>Wed, 21 Mar 2012 23:05:44 +0800</pubDate><description><![CDATA[观察者模式(Observer Pattern)：
定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时，
会通知所有观察者对象，使它们能够自动更新自己。
Subject类：被观察对象
(1)它把所有对观察者的引用保存在一个聚集里，每个主题都可以有任何数量的观察者。抽象主题提供一个接口，
可以增加和删除观测者对象。
ConcreteSubjec]]></description><category></category></item><item><title><![CDATA[建造者模式(Builder Pattern)]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7371281</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7371281</guid><author>gsfw2010</author><pubDate>Mon, 19 Mar 2012 23:03:28 +0800</pubDate><description><![CDATA[建造者模式（Builder Pattern）：
将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。
建造者模式是一步一步创建一个复杂的对象，它允许用户只通过指定复杂对象的类型和内容就可以创建它们，
用户不知道内部具体的构建细节。
Builder：抽象建造者
(1)为创建 一个Product对象的各个部件指定抽象接口。
ConcreteBuilder：具体建造者]]></description><category></category></item><item><title><![CDATA[原型模式（Prototype Pattern）]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7346871</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7346871</guid><author>gsfw2010</author><pubDate>Mon, 12 Mar 2012 23:03:23 +0800</pubDate><description><![CDATA[原型模式（Prototype Pattern）：
用原型实例创建指定的对象的种类，并且通过拷贝这些原型创建新的对象。
Prototype：原型类，声明一个克隆自身的接口。
ConcretePrototype：具体的原型类，继承Prototype，实现一个克隆自身的操作。
Clinet：让一个原型克隆自身从而创建一个新的对象。
原型模式其实就是从一个对象再创建另外一个可定制的对象，而且不需]]></description><category></category></item><item><title><![CDATA[工厂方法模式]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7343113</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7343113</guid><author>gsfw2010</author><pubDate>Sun, 11 Mar 2012 22:43:58 +0800</pubDate><description><![CDATA[工厂方法模式（Factory Method Pattern）:
定义一个用于创建对象的接口，让子类决定实例化哪一个类。工厂方法使一个类的实例延迟到其子类。
工厂方法模式是简单工厂模式的的抽象和推广。在简单工厂模式中，一个工厂类处于对产品类进许实例
化的中心位置，它知道每一个产品类的细节，并决定何时哪一个产品类应当被实例化。简单工厂模式的
优点是能够使客户端独立于产品的创建过程，并且在系统中]]></description><category></category></item><item><title><![CDATA[代理模式]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7331043</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7331043</guid><author>gsfw2010</author><pubDate>Wed, 07 Mar 2012 23:21:08 +0800</pubDate><description><![CDATA[代理模式（Proxy Pattern）：
为其他对象提供一种代理以控制对这个对象的访问。客户端调用时直接使用代理来访问。
结构说明（结构图略）
Subject类：定义了RealSubject和Proxy的公用接口，这样就在任何使用RealSubject的地方都可以用Proxy类代理访问。
RealSubject类：定义了Proxy所代表的真实实体
Proxy类：保存一个引用使得代理可以访]]></description><category></category></item><item><title><![CDATA[装饰模式]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7330706</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7330706</guid><author>gsfw2010</author><pubDate>Wed, 07 Mar 2012 22:08:30 +0800</pubDate><description><![CDATA[注：信息来源《大话设计模式》 
 
装饰模式（DecoratorPattern）：
动态地给一个对象添加一些额外的职责，就增加功能来说，装饰模式比生成子类更灵活。
Component：是定义一个对象接口，可以给这些对象动态的添加职责；
ConcreteComponent：是定义了一个具体的对象，也可以给这个对象添加一些职责；
Decorator，装饰抽象类，继承了Component，维]]></description><category></category></item><item><title><![CDATA[策略模式]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7316306</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7316306</guid><author>gsfw2010</author><pubDate>Sat, 03 Mar 2012 23:41:38 +0800</pubDate><description><![CDATA[策略模式(Stratergy):
定义了算法的家族，分别封装起来，让它们之间可以相互替换，此模式让算法的变化，不会影响到使用算法的用户。【DP定义】
从概念上来说，所有的算法完成的工作都是相同的，只是实现不同，策略模式可以以相同的方式调用不同的算法，减少了各种算
法类与使用算法类之间的耦合。
应用场合：不同的时间或者不同的情况下使用不同的业务规则时可以考虑使用策略模式。
实例：商场收银软]]></description><category></category></item><item><title><![CDATA[简单工厂模式]]></title><link>https://blog.youkuaiyun.com/gsfw2010/article/details/7303936</link><guid>https://blog.youkuaiyun.com/gsfw2010/article/details/7303936</guid><author>gsfw2010</author><pubDate>Tue, 28 Feb 2012 22:06:01 +0800</pubDate><description><![CDATA[简单工厂模式说明：
当需要创建类的实例时却不知道到底应该创建哪一个类时，选择用简单工厂模式。专门定义一个类来负责创建其他类的实例，被创建的实例通常都具有共同的父类。其实质是有一个工厂累根据传入的参量，动态决定应创建出哪一个累的实例。
实例说明
1.薪资管理系统
假定公司薪资分为技术人员（月薪），市场营销人员（底薪+提成），经理（年薪+股份）三种运算算法，如果我们把三种运算写在
一个类中，]]></description><category></category></item></channel></rss>