《JAVA设计模式》:策略模式
来源:互联网 发布:手机开淘宝店视频教程 编辑:程序博客网 时间:2024/06/06 08:26
策略模式:针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使它们可以相互替换。
策略模式结构:
把超类中的某些行为抽取出一个接口或抽象类,每个行为由具体的行为类实现。
在实际使用过程中,子类继承超类,子类特有的行为交由具体的行为类实现。
使用场景:
1.所有鸭子都会游泳;
2.每种鸭子飞行方式不同,可以把飞行行为抽取为接口,每种飞行方式交由特定的飞行类实现。
源码举例:
鸭子超类:
public abstract class Duck {FlyBehavior flyBehavior;public abstract void display();public void performFly(){flyBehavior.fly();}public void swim(){System.out.println("all ducks can swim");}}飞行行为接口:
public interface FlyBehavior {public void fly();}1.翅膀飞行:
public class FlyWithWings implements FlyBehavior {@Overridepublic void fly() {System.out.println("I am flying with wings");}}
2.不能飞行:
public class FlyNoWay implements FlyBehavior {@Overridepublic void fly() {System.out.println("I cant fly");}}子类鸭子:
1.mini鸭
public class MiniDuck extends Duck {@Overridepublic void display() {System.out.println("I am a miniDuck");}public MiniDuck() {flyBehavior = new FlyWithWings();}}2.模型鸭子
public class ModelDuck extends Duck {@Overridepublic void display() {System.out.println("I am a model duck");}public ModelDuck() {flyBehavior = new FlyNoWay();}}测试代码:
public class DuckTest {public static void main(String[] args) {Duck miniduck = new MiniDuck();Duck modelduck = new ModelDuck();miniduck.performFly();modelduck.performFly();}}
0 0
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java 设计模式-策略模式
- java设计模式--策略模式
- java设计模式-策略模式
- java设计模式-策略模式
- java设计模式--策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- 【Java设计模式】策略模式
- java设计模式--策略模式
- Java设计模式----策略模式
- Java设计模式------------策略模式
- Java设计模式 - 策略模式
- java设计模式---策略模式
- java设计模式-策略模式
- java设计模式----策略模式
- Android适配(屏幕适配、国际化适配)
- mysql源码安装
- 缓冲区溢出原理及教学版攻击演示
- rman理论(一)
- 非事务性操作在多线程下带来的坑
- 《JAVA设计模式》:策略模式
- 第一篇文章
- 关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
- Qt Creator 你必须要掌握的快捷操作
- R语言针对txt文本的词云做法
- #!/usr/bin/env python与#!/usr/bin/python的区别
- iOS 【极光推送】第一次打开app,收不到推送消息
- Android平台下加载PDF文件方案解析
- HttpClient+Jsoup 抓取网页信息