- 浏览: 429278 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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调用百度地图和谷歌地图
下面的例子是运用多态的一个例子
输出结果为:
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 938AbstractMediator.java代码如下: pa ... -
设计模式----原型模式(prototype pattern)
2013-07-21 22:51 641AdvTemplate.java代码如下: package ... -
设计模式----状态模式(state pattern)
2013-07-21 22:48 1210LiftState.java代码如下: package ... -
设计模式----访问者模式(visitor pattern)
2013-07-21 22:44 980IVisitor.java代码如下: package co ... -
设计模式----观察者模式(observer)
2013-07-20 19:53 1073这里采用两种方式实现观察者模式:第一种方式为完全自己写, ... -
设计模式----组合模式(composite)
2013-07-20 16:13 933该设计模式是以公司的组织结构为背景的 Crop.java代码 ... -
设计模式----迭代器模式(Iterator)
2013-07-20 15:59 921IProject.java代码如下: package co ... -
设计模式----装饰者模式(decorator pattern)
2013-07-15 09:08 1030SchoolReport.java代码如下: packag ... -
设计模式----命令模式(command pattern)
2013-07-15 09:09 960Group.java代码如下: pa ... -
设计模式----桥梁模式(bridge pattern)
2013-07-14 22:21 1187Product.java代码如下: package com ... -
设计模式----模板方法模式(template method pattern)
2013-07-14 17:00 1151HummerModel.java代码如下: packag ... -
设计模式----适配器模式(adapter)
2013-07-14 13:37 872IUserInfo.java代码如下: package c ... -
设计模式----门面模式(facade)
2013-07-14 13:30 951LetterProcess.java代码如下 ... -
设计模式----抽象工厂模式(abstract factory pattern)
2013-07-13 23:09 916Human.java代码如下: package com. ... -
设计模式----工厂方法模式(factory method pattern)
2013-07-10 22:19 1085给定一个工厂类,用这个工厂类造出一堆对象来,这些对象对应的类实 ... -
设计模式----多例模式(Multition)
2013-07-02 22:47 1038Emperor.java 代码如下: ... -
设计模式----单例模式(singleton)
2013-06-30 22:17 760单例就是唯一的意思。 第一种单例实现方式(在多线程环境中存在 ... -
设计模式----代理模式(proxy)
2013-06-30 22:02 963代理模式主要使用了java ... -
设计模式----策略模式(strategy)
2013-06-29 22:17 1096本文参考别人设计模式的一个例子。 关于诸葛亮的三个锦囊妙计的 ... -
装饰着模式(decorator)
2012-09-09 21:51 1014一下代码就是运用了装饰者模式: package com.ba ...
相关推荐
### 策略模式 Strategy Pattern #### 概述 策略模式是一种行为设计模式,它使得算法可以在运行时被更改。这种模式允许一个类的行为或其算法在运行时根据需要进行改变,通过这种方式,我们可以轻松地扩展不同的算法...
在策略模式中,有三个主要角色:策略接口(Strategy Interface)、具体策略类(Concrete Strategy Classes)和上下文(Context)。策略接口定义了所有支持的算法的公共接口,这样上下文就可以通过这个接口来调用这些...
1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式...
策略模式的主要组成部分包括上下文(Context)、策略接口(Strategy Interface)和具体策略类(Concrete Strategy Classes)。上下文维护一个对策略对象的引用,并使用这个引用来调用策略对象的算法。策略接口定义了...
在策略模式中,核心概念包括上下文(Context)、策略(Strategy)和具体策略(Concrete Strategy)。上下文是使用策略的对象,它维护一个对策略的引用,并通过这个引用调用策略的接口来执行策略。策略是一个接口或者抽象类...
而策略模式(Strategy Pattern)则是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用它的客户端。它主要用于处理那些具有多种行为的对象,可以根据具体情境选择不同...
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each ...
策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在C#中,策略模式常用于处理具有多种实现方式的情况,使得代码更加灵活,易于扩展。下面将详细讲解策略模式的概念、用途以及如何...
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式让算法的变化独立于使用算法的客户端。在策略模式中,一个基于策略的类会在内部进行算法的...
备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...
接下来是策略模式(Strategy Pattern)。它允许在运行时选择算法或策略,而不是在编译时就确定。这样可以提供更大的灵活性,使系统能够根据环境或条件的变化选择不同的行为。策略模式包含三个主要角色:策略接口...
javase 设计模式的strategy pattern《JAVA与模式》之策略模式详解
在名为"StrategePattern"的压缩包文件中,可能包含了关于策略模式的详细讲解、示例代码和应用场景的文档或教程。通过学习这些内容,你可以更深入地理解策略模式的原理和使用方法,提升在实际项目中的设计能力。
通过对"01-strategy-pattern"的学习,你可以深入理解策略模式的原理,以及如何在实际项目中应用这种模式。同时,分析错误的实现和标准答案可以帮助你提高代码质量,避免常见的设计误区。这不仅能够提升你的编程技能...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
策略模式在Unity中的应用 策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Unity游戏开发中,这种模式尤其有用,因为它允许我们根据游戏的不同阶段或角色的状态动态地调整其行为逻辑,而无需硬编码...
【标题】"sprintboot-strategy-pattern-demo-master.zip" 是一个使用Spring Boot技术实现的策略模式示例项目,它提供了一种快速理解并应用策略模式的开箱即用的体验。 【描述】"基于springboot做了一个策略模式的...
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4.... 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)
策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 数据访问对象模式(Dao ...
在提供的压缩文件名"designpattern"中,可能包含了关于策略模式的源码示例或者相关文档。通过研究这些资源,可以更深入地理解策略模式的实现方式和应用场景。如果能够访问这些文件,将有助于你实践并掌握策略模式的...