-
publicabstractclassDuck{
- FlyBehaviorflyBehavior;
- QuackBehaviorquackBehavior;
-
publicDuck(){
- }
-
publicvoidsetFlyBehavior(FlyBehaviorfb){
- flyBehavior=fb;
- }
-
publicvoidsetQuackBehavior(QuackBehaviorqb){
- quackBehavior=qb;
- }
-
abstractvoiddisplay();
-
publicvoidperformFly(){
- flyBehavior.fly();
- }
-
publicvoidperformQuack(){
- quackBehavior.quack();
- }
-
publicvoidswim(){
-
System.out.println("Allducksfloat,evendecoys!");
- }
- }
-
publicinterfaceFlyBehavior{
-
publicvoidfly();
- }
-
publicinterfaceQuackBehavior{
-
publicvoidquack();
- }
-
publicclassFlyWithWingsimplementsFlyBehavior{
-
publicvoidfly(){
-
System.out.println("I'mflying!!");
- }
- }
-
publicclassRedHeadDuckextendsDuck{
-
publicRedHeadDuck(){
-
flyBehavior=newFlyWithWings();
-
quackBehavior=newQuack();
- }
-
publicvoiddisplay(){
-
System.out.println("I'marealRedHeadedduck");
- }
- }
测试代码如下:
RedHeadDuck redHeadDuck = new RedHeadDuck();
redHeadDuck.performFly();
redHeadDuck.display();
输出结果:
I'm flying!!
I'm a real Red Headed duck
下面我们可以实现其他飞的方式,例如乘火箭
-
publicclassFlyRocketPoweredimplementsFlyBehavior{
-
publicvoidfly(){
-
System.out.println("I'mflyingwitharocket");
- }
- }
测试代码:
RedHeadDuck redHeadDuck = new RedHeadDuck();
redHeadDuck.setFlyBehavior(new FlyRocketPowered());
redHeadDuck.display();
redHeadDuck.performFly();
输出结果:
I'm a real Red Headed duck
I'm flying with a rocket
小结:
可见策略模式定义了算法,将他们分别封装,他们之间可以相互替换。(例如:FlyWithWings和FlyRocketPowered)
这样每个实现都相互不影响。
分享到:
相关推荐
设计模式-策略模式-c++版 压缩包中有build好的程序和工程设计到的所有类的源码,还有一个Uml类图
设计模式-策略模式源代码 .net,策略模式,模式,设计模式 文件包中有UML策略模式详解图
设计模式-策略模式(Strategy)结合Android小知识讲解,简单明了
设计模式-策略模式(讲解及其实现代码)
设计模式--策略模式java例子
策略模式是一种行为型设计模式,它允许您定义一系列算法,将每个算法封装起来,并使它们可以互换使用。这种模式使得算法可以独立于使用它们的客户端而变化。在 Java 中,策略模式通常由一个接口和多个实现该接口的类...
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
设计模式--策略模式StrategyPattern
设计模式---策略者模式---根据《Head First 设计模式》自己实现
JAVA-设计模式-行为型模式-策略模式
NULL 博文链接:https://xieye.iteye.com/blog/1070202
Java设计模式,策略模式的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
java设计模式--策略模式 HeadFirst书中的 装饰者模式
策略模式思想简单实现,初学者可看看。 设计模式 策略模式 Strategy
这是最为经典的东南大学出版社的《深入浅出设计模式》的第一章策略模式的ios软件实现! 陆续我还会将其余章源代码与大家分享。
1.当你有很多类似的类,但它们执行某些行为的方式不同时,请使用此 2.使用该模式将类的业务逻辑与算法的实现细节隔离开来,这些算法在 3.当你的类具有大量的条件运