策略模式

来源:互联网 发布:mac系统优化工具 编辑:程序博客网 时间:2024/06/05 13:31

书上的例子1:

package com.jane.Strategy;/** * Created by jane on 16/5/29. */interface FlyBehavior{    public void fly();}interface QuackBehavior{   public void quack();}class FlyWithWings implements FlyBehavior{    @Override    public void fly(){        System.out.println("I'm flying!");    }}class Quack implements QuackBehavior{    @Override    public void quack() {        System.out.println("Quack");    }}class MuteQuack implements QuackBehavior{    @Override    public void quack() {        System.out.println("<<Silence>>");    }}class Squeak implements QuackBehavior{    @Override    public void quack() {        System.out.println("Squeak");    }}class FlyNoWay implements  FlyBehavior{    @Override    public void fly() {        System.out.println("I can't fly");    }}abstract class Duck {    FlyBehavior flyBehavior;    QuackBehavior quackBehavior;    public Duck(){        quackBehavior = new Quack();        flyBehavior = new FlyWithWings();    }    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!");    }}class MallardDuck extends Duck{    FlyBehavior flyBehavior;    QuackBehavior quackBehavior;    public MallardDuck(){        quackBehavior = new Quack();        flyBehavior = new FlyWithWings();    }    public void display(){        System.out.println("I'm a real Mallard duck");    }}public class MiniDuckSmulator{    public static void main(String[] args) {        Duck mallard = new MallardDuck();        mallard.performQuack();        mallard.performFly();    }}

运行结果:

运行结果

《Head First 设计模式》这书不错,虽然搞半天没看明白

书上总结的要点:
1、知道OO记住,并不在于让你设计出良好的OO系统
2、良好的OO设计必须具备可复用、可扩充、可维护三个特性
3、模式可以让我们建造出具有良好OO设计质量的系统
4、模式被认为是历经验证的OO设计经验
5、模式不是代码,而是针对设计问题的通用解决方案,你可把它们应用到特定的应用中
6、模式不是被发明,而是被发现
7、大多数的模式和原则都允许系统局部改变独立于其它部分
8、我们常把系统中会变化的部分抽出来封装
9、模式让开发人员之间有共享的语言,能够最大化沟通的价值

谷歌到的策略模式相关文章,回头看
http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html

0 0
原创粉丝点击