设计模式 -------- 策略模式
来源:互联网 发布:matlab 生成cell矩阵 编辑:程序博客网 时间:2024/06/02 13:27
初学设计模式 之 -------------- 策略模式:
策略模式(多用组合,少用继承): 就好比有一个鸭子类! 然而生活中有很多种类的鸭子!
public abstract class Dog { public FlyBehavior flyBehavior; public QuackBehavior quackBehavior; public void setFlyBehavior(FlyBehavior flyBehavior) { this.flyBehavior = flyBehavior; } public void setQuackBehavior(QuackBehavior quackBehavior) { this.quackBehavior = quackBehavior; } //叫 public void call(){ flyBehavior.fly(); } //跑 public void run(){ quackBehavior.quack(); } //都有不痛的类型 public abstract void setType();}
鸭子又有许多不同的动作和外形! 有的不会飞有的会飞!这时就需要我们把具体的行为给抽出一个模块!
public class BlueDog extends Dog { public BlueDog() { flyBehavior = new SlowlyFly(); quackBehavior = new ZIQuack(); }}
例如 使用代理“QuackBehavior(接口)”来当做鸭子的一个行为! 然后又有需要不同的行为, 就可以写不同的类去实现代理接口!
public class SlowlyFly implements FlyBehavior { @Override public void fly() { Log.e("TAG" ,"慢慢的飞"); }}
当我们需要为不同的对象调用不同的行为时就可以吧这个模块化,最后在调用时:
public class MainActivity extends AppCompatActivity { private Dog dog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dog = new RedDog(); dog.call(); dog = new BlueDog(); dog.call(); dog.setFlyBehavior(new NoFly()); dog.call(); }}
阅读全文
0 0
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- 设计模式- 策略模式
- 设计模式------策略模式
- 设计模式--策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- Cent OS 7 Yum本地源配置
- Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
- Druid、C3P0、Tomcat Pool的性能测试与选型
- Nginx实现静态资源服务器
- GC算法
- 设计模式 -------- 策略模式
- php微信
- java线程处理异常Thread.UncaughtExceptionHandler
- windows10 下 opencv2.4.13/opencv3.0.0 + VS2013 + cuda7.5 环境配置
- 系统级性能分析工具 — Perf
- 数据结构之矩阵实现
- 硬盘的存储原理和内部架构
- php变量作用域
- pyhton之pip常用命令