设计模式--策略模式
来源:互联网 发布:淘宝大韩泡泡糖靠谱吗 编辑:程序博客网 时间:2024/06/05 11:48
<!--设计模式之Strategy Pattern -行为型模式--策略模式>
// 定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户
Demo1---FACTORY METHOD
鸭子有飞行和鸣叫两种行为,而不同的鸭子,它的飞行行为和鸣叫行为各不相同,如何创建一个程序实现
---------------------------------------------------
---------------------------------------------------
package model;
public abstract class Duck {
/**
* 飞行行为
*/
FlyBehavior flyBehavior;
/**
* 叫声行为
*/
QuackBehavior quackBehavior;
//抽象方法
public Duck(){
}
public void setFlyBehavior(FlyBehavior flyBehavior) {
this.flyBehavior = flyBehavior;
}
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 model;
import dao.FlyWithSwing;
import dao.Quack;
public class MallarDuck extends Duck{
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("I'm real Mallard duck");
}
public MallarDuck(){
quackBehavior = new Quack();
flyBehavior = new FlyWithSwing();
}
}
---------------------------------------------------------------------
----------------------------------------------------------------------
package model;
import dao.FlyNoWay;
import dao.Quack;
public class ModelDuck extends Duck{
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("I'm a model duck!!");
}
public ModelDuck(){
flyBehavior = new FlyNoWay();
quackBehavior = new Quack();
}
}
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
package model;
public interface FlyBehavior {
public void fly();
}
------------------------------------------------------------------------------
-------------------------------------------------------------------------------
package model;
public interface QuackBehavior {
public void quack();
}
------------------------------------------------------------------------------
-------------------------------------------------------------------------------
package dao;
import model.FlyBehavior;
public class FlyNoWay implements FlyBehavior{
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("I can't fly!!");
}
}
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
package dao;
import model.FlyBehavior;
public class FlyRocketPowered implements FlyBehavior{
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("I'm flying with a rocket!");
}
}
------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
package dao;
import model.FlyBehavior;
public class FlyWithSwing implements FlyBehavior {
@Override
public void fly() {
System.out.println("I'm flying!!");
}
}
------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
package dao;
import model.QuackBehavior;
public class MuteQuake implements QuackBehavior{
@Override
public void quack() {
// TODO Auto-generated method stub
System.out.println("silence");
}
}
------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
package dao;
import model.QuackBehavior;
public class Quack implements QuackBehavior {
@Override
public void quack() {
System.out.println("Quack");
}
}
-----------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
package dao;
import model.QuackBehavior;
public class Squake implements QuackBehavior{
@Override
public void quack() {
// TODO Auto-generated method stub
System.out.println("Squake");
}
}
阅读全文
1 0
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- 设计模式- 策略模式
- 设计模式------策略模式
- 设计模式--策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- FCN
- hdu4662-枚举|搜索&模拟-Scaring the Birds
- 手势:UIResponse,UIGestureRecognizer,UIControl
- 对ui5的一些总结和思考
- SQL Server 临时表和表变量系列之认知误区篇
- 设计模式--策略模式
- 如何读取.properties配置文件的内容
- Yii2-ueditor-widget使用
- nohup 语法
- wait(),notify(),notifyAll()的理解与使用
- 9个完整的开源项目
- PHP生成验证码的类
- Leetcode-Insert Interval
- Python的操作性函数