- 浏览: 423149 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (170)
- java (77)
- javascript (5)
- jsp (1)
- servlet (6)
- struts (8)
- hibernate (3)
- spring (4)
- ajax (5)
- jquery (3)
- apache cxf (0)
- ext.js (1)
- hadoop (0)
- android (0)
- html5 (2)
- linux (5)
- flex (1)
- tomcat (1)
- jboss (0)
- nginx (0)
- mysql (16)
- sql server (3)
- oracle (4)
- div+css (0)
- mybatis (4)
- design patterns (22)
- xml (2)
- postgresql (3)
- velocity (1)
- freemarker (1)
- kendo-ui (2)
- ibatis (1)
- socket (1)
- C and C++ (1)
- C# (2)
- 程序设计----算法 (0)
- jersey (1)
- dd (0)
- perl (1)
- shell (0)
最新评论
-
书策稠浊:
兄弟,这tm是Java?
java调用百度地图和谷歌地图 -
fengyunlouyanyu:
jquery----删除指定id的div下的img -
yangjianzhouctgu:
Neoman 写道hi,我看你引入了kendo.web.min ...
kendo-ui中kendoGrid的用法 -
Neoman:
hi,我看你引入了kendo.web.min.js 这个js, ...
kendo-ui中kendoGrid的用法 -
yangjianzhouctgu:
llscp 写道这是JS吧...对的呀
java调用百度地图和谷歌地图
策略模式(strategy pattern)
- 博客分类:
- design patterns
下面的例子是运用多态的一个例子
输出结果为:
package com.interfaces; public interface FlyBehavior { public void fly(); }
package com.interfaces; public interface QuackBehavior { public void quack(); }
package com.interfaces.impl; import com.interfaces.FlyBehavior; public class FlyNoWay implements FlyBehavior { @Override public void fly() { System.out.println("I can't fly"); } }
package com.interfaces.impl; import com.interfaces.FlyBehavior; public class FlyRocketPowered implements FlyBehavior { @Override public void fly() { System.out.println("I'm flying with a rocket!"); } }
package com.interfaces.impl; import com.interfaces.FlyBehavior; public class FlyWithWings implements FlyBehavior { @Override public void fly() { System.out.println("I'm flying"); } }
package com.interfaces.impl; import com.interfaces.QuackBehavior; public class MuteQuack implements QuackBehavior { @Override public void quack() { System.out.println("<<Silence>>"); } }
package com.interfaces.impl; import com.interfaces.QuackBehavior; public class Quack implements QuackBehavior { @Override public void quack() { System.out.println("Quack"); } }
package com.interfaces.impl; import com.interfaces.QuackBehavior; public class Squeak implements QuackBehavior { @Override public void quack() { System.out.println("Squeak"); } }
package com.bean; import com.interfaces.FlyBehavior; import com.interfaces.QuackBehavior; public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public FlyBehavior getFlyBehavior() { return flyBehavior; } public void setFlyBehavior(FlyBehavior flyBehavior) { this.flyBehavior = flyBehavior; } public QuackBehavior getQuackBehavior() { return quackBehavior; } public void setQuackBehavior(QuackBehavior quackBehavior) { this.quackBehavior = quackBehavior; } public abstract void display(); public void performFly(){ flyBehavior.fly(); } public void performQuack(){ quackBehavior.quack(); } public void swim(){ System.out.println("All ducks float , even decoys!"); } }
package com.bean; import com.interfaces.impl.FlyWithWings; import com.interfaces.impl.Quack; public class MallardDuck extends Duck { public MallardDuck(){ quackBehavior = new Quack(); flyBehavior = new FlyWithWings(); } @Override public void display() { System.out.println("I'm a real Mallard duck"); } }
package com.bean; import com.interfaces.impl.FlyNoWay; import com.interfaces.impl.Quack; public class ModelDuck extends Duck { public ModelDuck(){ flyBehavior = new FlyNoWay(); quackBehavior = new Quack(); } @Override public void display() { System.out.println("I'm a model duck"); } }
package com.test; import com.bean.Duck; import com.bean.MallardDuck; import com.bean.ModelDuck; import com.interfaces.impl.FlyRocketPowered; public class MiniDuckSimulator { public static void main(String[] args) { Duck mallard = new MallardDuck(); mallard.performFly(); mallard.performQuack(); Duck model = new ModelDuck(); model.performFly(); model.setFlyBehavior(new FlyRocketPowered()); model.performFly(); } }
输出结果为:
I'm flying Quack I can't fly I'm flying with a rocket!
发表评论
-
设计模式----中介者模式(demiator pattern)
2013-07-21 22:55 898AbstractMediator.java代码如下: pa ... -
设计模式----原型模式(prototype pattern)
2013-07-21 22:51 609AdvTemplate.java代码如下: package ... -
设计模式----状态模式(state pattern)
2013-07-21 22:48 1163LiftState.java代码如下: package ... -
设计模式----访问者模式(visitor pattern)
2013-07-21 22:44 940IVisitor.java代码如下: package co ... -
设计模式----观察者模式(observer)
2013-07-20 19:53 1039这里采用两种方式实现观察者模式:第一种方式为完全自己写, ... -
设计模式----组合模式(composite)
2013-07-20 16:13 901该设计模式是以公司的组织结构为背景的 Crop.java代码 ... -
设计模式----迭代器模式(Iterator)
2013-07-20 15:59 890IProject.java代码如下: package co ... -
设计模式----装饰者模式(decorator pattern)
2013-07-15 09:08 991SchoolReport.java代码如下: packag ... -
设计模式----命令模式(command pattern)
2013-07-15 09:09 927Group.java代码如下: pa ... -
设计模式----桥梁模式(bridge pattern)
2013-07-14 22:21 1149Product.java代码如下: package com ... -
设计模式----模板方法模式(template method pattern)
2013-07-14 17:00 1119HummerModel.java代码如下: packag ... -
设计模式----适配器模式(adapter)
2013-07-14 13:37 835IUserInfo.java代码如下: package c ... -
设计模式----门面模式(facade)
2013-07-14 13:30 916LetterProcess.java代码如下 ... -
设计模式----抽象工厂模式(abstract factory pattern)
2013-07-13 23:09 888Human.java代码如下: package com. ... -
设计模式----工厂方法模式(factory method pattern)
2013-07-10 22:19 1045给定一个工厂类,用这个工厂类造出一堆对象来,这些对象对应的类实 ... -
设计模式----多例模式(Multition)
2013-07-02 22:47 1009Emperor.java 代码如下: ... -
设计模式----单例模式(singleton)
2013-06-30 22:17 739单例就是唯一的意思。 第一种单例实现方式(在多线程环境中存在 ... -
设计模式----代理模式(proxy)
2013-06-30 22:02 930代理模式主要使用了java ... -
设计模式----策略模式(strategy)
2013-06-29 22:17 1044本文参考别人设计模式的一个例子。 关于诸葛亮的三个锦囊妙计的 ... -
装饰着模式(decorator)
2012-09-09 21:51 983一下代码就是运用了装饰者模式: package com.ba ...
相关推荐
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。...
1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式...
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
NULL 博文链接:https://bossshit.iteye.com/blog/715672
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each ...
主要介绍了C#策略模式(Strategy Pattern),以一个简单的实例讲述了C#策略模式的实现方法,包括策略模式的用途以及具体实现方法,需要的朋友可以参考下
备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...
设计模式——策略模式Strategy design pattern _ model
javase 设计模式的strategy pattern《JAVA与模式》之策略模式详解
NULL 博文链接:https://lym6520.iteye.com/blog/690554
策略模式[STRATEGY PATTERN] 代理模式[PROXY PATTERN] 单例模式[SINGLETON PATTERN] 多例模式[MULTITION PATTERN] 工厂方法模式[FACTORY METHOD PATTERN] 抽象工厂模式[ABSTRACT FACTORY PATTERN] 门面模式[FACADE ...
策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 数据访问对象模式(Dao ...
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4.... 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) ... 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern) @Author kwming
创建型模式用来处理对象的创建过程,主要包含以下5种设计模式: 工厂方法模式(Factory Method ... 策略模式(Strategy Pattern) 模板方法模式(Template Method Pattern) 访问者模式(Visitor Pattern)
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 策略模式java-demo 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 ...
6. 策略模式 (Strategy Pattern) 7. 适配器模式 (Adapter Pattern) 8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern) 10. 原型模式 (Prototype Pattern) 11. 组合模式 (Composite ...
策略模式StrategyPattern,通过实现鸭子的飞行策略以及叫声策略演示策略模式的具体实现!