设计模式之策略模式
来源:互联网 发布:两电一邮 知乎 编辑:程序博客网 时间:2024/06/08 12:15
策略模式精髓:1.Favor composition over inheritance复合(组合)优先于继承2.组合定义:在类中增加一个私有域,引用另一个已有的类的实例,通过调用引用实例的方法从而获得新的功能,这种设计被称作组合(复合)(意思就是:得到其他类的对象,使用这个对象的方法。)
/* * 鸭子父类,所有鸭子都需继承此父类 */public abstract class Duck {public abstract void display();public void quack(){System.out.println("嘎嘎嘎");}private FlyingStragety flyingStragety;public FlyingStragety getFlyingStragety() {return flyingStragety;}public void setFlyingStragety(FlyingStragety flyingStragety) {this.flyingStragety = flyingStragety;}//父类新增方法接口由子类重写该接口具体实现public void fly(){flyingStragety.performFly();}}/* * 策略接口,实现飞行 */public interface FlyingStragety {public void performFly();}//重写接口方法的具体实现类public class FlyWithWin implements FlyingStragety{@Overridepublic void performFly() {// TODO Auto-generated method stubSystem.out.println("我用翅膀飞");}}public class RedHeadDuck extends Duck{ public RedHeadDuck() {super(); super.setFlyingStragety(new FlyWithWin());//实现类实例,创建实例时即创建了fly}@Overridepublic void display() {// TODO Auto-generated method stubSystem.out.println("我是红头呀");}@Overridepublic void fly() {// TODO Auto-generated method stubsuper.fly();}}public class DuckTest {public static void main(String[] args) {Duck duck = new RedHeadDuck();duck.display();duck.fly();duck.quack();}}
测试结果:
我是红头呀我用翅膀飞嘎嘎嘎
阅读全文
0 0
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- extends,with关键字的区别
- Linux下的常用命令(三)-scp,lsof
- Codeforces 835C
- MySQL插入中文字符不成功问题解决
- 基于AspectJ实现AOP
- 设计模式之策略模式
- webpack性能优化
- 数据结构顺序表的“增删改查”功能实现
- 使用ssh正向连接、反向连接、做socks代理的方法
- HDU 1002 A + B Problem II
- JS中数组有关知识点
- proxychins+ssh使用socks5代理
- WebGL之旅(十七) 带纹理的立方体
- Codeforces 834D The Bakery 线段树优化DP