欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Java策略模式及代码

Java策略模式及代码

2024/10/24 15:14:48 来源:https://blog.csdn.net/m0_74295055/article/details/139467696  浏览:    关键词:Java策略模式及代码

使用场景:

  • 策略模式建议找出负责用许多不同方式完成特定任务的类, 然后将其中的算法抽取到一组被称为策略的独立类中。
  • 名为上下文的原始类必须包含一个成员变量来存储对于每种策略的引用。 上下文并不执行任务, 而是将工作委派给已连接的策略对象。
  • 上下文不负责选择符合任务需要的算法——客户端会将所需策略传递给上下文。 

》》》实现行为类的组合替换。

策略模式代码

定义飞的行为类

public interface FlyBehavior {public void fly();
}public class FlyWithWings implements FlyBehavior{@Overridepublic void fly() {System.out.println("用翅膀飞");}
}public class FlyNoWay implements FlyBehavior {@Overridepublic void fly() {System.out.println("不会飞");}
}

定义叫的行为类

public interface QuackBehaivor {public void quack();
}public class Quack implements QuackBehaivor {@Overridepublic void quack() {System.out.println("呱呱叫");}
}public class MuteQuack implements QuackBehaivor {@Overridepublic void quack() {System.out.println("不会叫");}
}

定义上下文对象超类,鸭子类

public abstract class Duck {FlyBehavior flyBehavior;QuackBehaivor quackBehavior;public abstract void display();public void performFly() {flyBehavior.fly();}public void performQuack() {quackBehavior.quack();}public void swim() {System.out.println("所有的鸭子都会漂浮");}// 动态设置飞行行为public void setFlyBehavior(FlyBehavior flyBehavior) {this.flyBehavior = flyBehavior;}//动态设置叫的行为public void setQuackBehavior(QuackBehaivor quackBehavior) {this.quackBehavior = quackBehavior;}
}

定义鸭子实现类

public class MallardDuck extends Duck {@Overridepublic void display() {System.out.println("我是绿头鸭");}
}

启动类demo

public class MiniDuckSimulator {public static void main(String []args) {Duck mallard = new MallardDuck();mallard.setFlyBehavior(new FlyWithWings());//用翅膀飞mallard.setQuackBehavior(new Quack());//呱呱叫mallard.performFly();mallard.performQuack();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com