策略模式(Header-First笔记)
2011-07-20 17:36
99 查看
个人网站www.itiask.com 专业问答网站,基于我记录框架开发
策略模式和设计原则(主要是自己的笔记:水平较低,请勿语言攻击)
如果想理解的深入建议深入的读读headfirst,这个真有用,如果只是随便看看,其实是学不到啥东西的。
本文包括两部分(1.Petshop中策略模式的应用、2.控制台小应用程序)
1.Petshop中策略模式的应用
至于在程序中的应用,我也是个新手,不知道何时需要这种模式,可以参考下petshop中的策略模式,理解下在真实项目中如何使用。我对petshop中策略模式的理解就是里面处理订单时可能有同步和异步插入数据两种方式,具体用那种方式直接在配置文件中修改即可。看文字不如看图片,自己画了画UML图,不会用工具但是意思差不多。
View Code
策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,次模式让算法的变化独立于使用算法的客户
策略模式和设计原则(主要是自己的笔记:水平较低,请勿语言攻击)
如果想理解的深入建议深入的读读headfirst,这个真有用,如果只是随便看看,其实是学不到啥东西的。
本文包括两部分(1.Petshop中策略模式的应用、2.控制台小应用程序)
1.Petshop中策略模式的应用
至于在程序中的应用,我也是个新手,不知道何时需要这种模式,可以参考下petshop中的策略模式,理解下在真实项目中如何使用。我对petshop中策略模式的理解就是里面处理订单时可能有同步和异步插入数据两种方式,具体用那种方式直接在配置文件中修改即可。看文字不如看图片,自己画了画UML图,不会用工具但是意思差不多。
View Code
///<summary> /// 鸭子超类 ///</summary> publicabstractclass Duck { IFly fly ; IQuack quack; publicvoid SetFly(IFly fly) { this.fly = fly; } publicvoid SetQuack(IQuack quack) { this.quack = quack; } publicabstractvoid Display(); publicvoid Swim() { Console.WriteLine("I'm Swimming"); } publicvoid PerFormFly() { fly.Fly(); } publicvoid PerFormQuack() { quack.QuackSuper(); } } ///<summary> /// 飞行行为的接口 ///</summary> publicinterface IFly { void Fly(); } publicclass FlyWithWings : IFly { publicvoid Fly() { Console.WriteLine("I'm flying"); } } publicclass FlyNoWay : IFly { publicvoid Fly() { Console.WriteLine("I can't fly"); } } publicclass FlayWithRocket : IFly { publicvoid Fly() { Console.WriteLine("I'm flying with rocket"); } } ///<summary> /// 叫的行为接口 ///</summary> publicinterface IQuack { void QuackSuper(); } publicclass Quack : IQuack { publicvoid QuackSuper() { Console.WriteLine("鸭子呱呱叫"); } } publicclass SQuack : IQuack { publicvoid QuackSuper() { Console.WriteLine("鸭子吱吱叫"); } } publicclass MuteQuack : IQuack { publicvoid QuackSuper() { Console.WriteLine("鸭子不会叫"); } } publicclass MallardDuck : Duck { publicoverridevoid Display() { Console.WriteLine("绿头鸭子"); } } publicclass RedHeadDuck : Duck { publicoverridevoid Display() { Console.WriteLine("红头鸭子"); } } publicclass RubberDuck : Duck { publicoverridevoid Display() { Console.WriteLine("橡皮鸭子"); } } publicclass DecoyDuck : Duck { publicoverridevoid Display() { Console.WriteLine("诱饵鸭子"); } } class Program { staticvoid Main(string[] args) { Duck duck =new MallardDuck(); duck.Display(); duck.SetFly (new FlyNoWay()); duck.SetQuack(new SQuack()); duck.PerFormFly(); duck.PerFormQuack(); duck.Swim(); Console.Read(); } }
策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,次模式让算法的变化独立于使用算法的客户
相关文章推荐
- Header First设计模式学习笔记——单例模式
- Head First Design patterns笔记-Strategy Patterns (从不同的人使用不同的交通工具上班看策略模式)
- 装饰者模式——HeaderFirst学习笔记
- Header First设计模式学习笔记——观察者模式
- Header First设计模式学习笔记——装饰器模式
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- 设计模式笔记---策略模式(2013.3.25)
- 设计模式笔记-策略模式
- Java-马士兵设计模式学习笔记-策略模式-模拟Comparable接口
- 设计模式学习笔记(一):策略模式
- 设计模式:策略模式(学习笔记)
- 设计模式笔记——策略模式
- 【HeadFirst 设计模式学习笔记】1.策略模式
- 策略模式---《大话设计模式》笔记
- 设计模式学习笔记(六)之策略模式(Strategy)
- 商场收银系统之策略模式学习笔记[C++版]
- 设计模式笔记(二)--策略模式、观察者模式
- 学习笔记 ---- 设计模式之策略模式
- head first design patterns(1):策略模式,观察者模式,工厂模式,抽象工厂模式
- 设计模式之策略模式-笔记