接口应用——策略模式
2016-01-26 00:00
302 查看
策略模式(Strategy Pattern),定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。
OO设计原则:
面向接口编程(面向抽象编程)
封装变化
多用组合,少用继承
OO设计原则:
面向接口编程(面向抽象编程)
封装变化
多用组合,少用继承
package com.main; //策略设计模式 public class StrategyPattern { public static void main(String[] args) { Duck trueDuck = new TrueDuck("真鸭子"); trueDuck.setSwim(new SwimImpl());// 设置游泳的具体实现 trueDuck.swim(); System.out.println("--------------"); Duck modelDuck = new ModelDuck("模型鸭子"); modelDuck.setSwim(new NotSwimImpl());// 设置游泳的具体实现 modelDuck.swim(); } } // 是否会游泳的接口(将游泳这一种能力抽象出来) interface Swimable { public void swim(); } // Swimable接口的实现类1 class SwimImpl implements Swimable { @Override public void swim() { System.out.println("会游泳"); } } // Swimable接口的实现类2 class NotSwimImpl implements Swimable { @Override public void swim() { System.out.println("不会游泳"); } } class Duck { private String name; // 只说明有游泳这个属性,并不去确定是否会游泳 private Swimable swim; public void setSwim(Swimable swim) { this.swim = swim; } public Duck(String name) { this.name = name; } public void swim() { System.out.print("我是" + name + ","); swim.swim(); } } // 真鸭子具体类 class TrueDuck extends Duck { public TrueDuck(String name) { super(name); } } // 模型鸭子具体类 class ModelDuck extends Duck { public ModelDuck(String name) { super(name); } }
相关文章推荐
- 简单工厂模式
- Swift和OC文件间的相互调用
- 更新JKSideSlipView框架(侧滑)
- UILabel的使用
- 在Linux centos下安装便捷发邮件的软件
- SecureCRT的logon action登录跳转设置
- Eclipse 中查看一个方法被哪些对象引用了
- storm自定义数据分组
- storm可靠机制
- Pav Books OpenCart 商城自适应主题模板 ABC-0018
- 信息提示框组件 Ext.window.MessageBox
- 进度条组件Ext.ProgressBar
- 脑筋急转弯api数据实现
- 居民收支api 中国城镇农村居民家庭收支数据
- CDH 中solrcloud 关于shard副本问题
- SUSE LINUX 11 重置ROOT密码方法
- Unity Heathaze shader
- Unity 剧情 编辑器 开发
- d语言json的解析
- d语言之inout关键字