java设计模式之观察者模式

转载 2015年07月09日 17:37:27

实例代码:

// 抽象类 Girl
public abstract class Girl {
    String description = "no particular";

    public String getDescription(){
        return description;
    }
}

// 美国女孩
public class AmericanGirl extends Girl {
    public AmericanGirl() {
        description = "+AmericanGirl";
    }
}

// 国产妹子
public class ChineseGirl extends Girl {
    public ChineseGirl() {
        description = "+ChineseGirl";
    }
}

// 装饰者
public abstract class GirlDecorator extends Girl {
    public abstract String getDescription();
}

// 下面以美国女孩示例
// 给美国女孩加上金发
public class GoldenHair extends GirlDecorator {

    private Girl girl;

    public GoldenHair(Girl g) {
        girl = g;
    }

    @Override
    public String getDescription() {
        return girl.getDescription() + "+with golden hair";
    }

}

// 加上身材高大的特性
public class Tall extends GirlDecorator {

    private Girl girl;

    public Tall(Girl g) {
        girl = g;
    }

    @Override
    public String getDescription() {
        return girl.getDescription() + "+is very tall";
    }

}


// 检验一下
public class Main {

    public static void main(String[] args) {
        Girl g1 = new AmericanGirl();
        System.out.println(g1.getDescription());

        GoldenHair g2 = new GoldenHair(g1);
        System.out.println(g2.getDescription());

        Tall g3 = new Tall(g2);
        System.out.println(g3.getDescription());

        // 你也可以一步到位
        // Girl g = new Tall(new GoldenHair(new AmericanGirl())); 
    }
}


可以理解为:

当一个对象更新信息时,它会通知它的观测者们,并将自己的信息传递给它们,使它们更新自己的信息。

《设计模式之禅》学习小结之观察者模式,门面模式和备忘录模式

一。观察者模式
  • aid414944
  • aid414944
  • 2014年04月15日 08:59
  • 664

Java设计模式-回调函数和观察者模式

Android的框架中有非常多的地方使用了回调的模式,例如Activity的生命周期,按钮的点击事件等。 下面是回调的基本模型: public class A { private CallBack...
  • cauchyweierstrass
  • cauchyweierstrass
  • 2015年03月24日 16:20
  • 8981

Java观察者模式以及与订阅发布者模式区别

设计模式复习,代码是最好的说明。 定义:观察者模式定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,属于行为类模式。 注意:观察者模式和发布订阅...
  • poyuan97
  • poyuan97
  • 2017年09月28日 16:15
  • 118

设计模式——观察者模式(Observer)

要想正确理解设计模式,首先必须明确它是为了解决什么问题而提出来的。 设计模式学习笔记,欢迎交流。 ——Shulin 转载请注明出处:http://blog.csdn.net/zhsh...
  • u012909091
  • u012909091
  • 2014年08月20日 16:52
  • 2945

Java设计模式(观察者模式JDK自带)

JDK自带的观察者模式和我们上一节说的基本相似,也有通用的观察协议规则 Observer,这个接口中只有一个方法,就是update方法 public interface Observer { ...
  • xyjwsj
  • xyjwsj
  • 2017年02月15日 16:47
  • 744

设计模式之观察者模式与事件委托

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自己更新自己。         观察者结构模式图:     ...
  • wangdan199112
  • wangdan199112
  • 2014年02月16日 21:36
  • 2285

设计模式——观察者模式 Java源代码

观察者模式,本程序改编自《Head First Design Patterns》上关于气象站的例子,我将例子进行了化简。...
  • u013390476
  • u013390476
  • 2015年12月29日 19:30
  • 1179

设计模式--观察者模式、状态模式

【观察者模式】          多个观察者同时监听一个主题,一旦主题对象发生改变便会通知所有的观察者对象,并相应自己的更新事件!                                   ...
  • u012466304
  • u012466304
  • 2014年12月09日 17:40
  • 1935

大话西游之设计模式_起手篇

介绍了设计模式是什么。能干什么、及怎么运用? 通过西游记中故事的分析,将常用设计模式融合在故事的实现中,帮助大家理解&记住各种设计模式的概念及使用方法。 达到活学活用的情况~...
  • myhc2014
  • myhc2014
  • 2015年10月15日 10:52
  • 747

观察者模式(看完马士兵视频的总结)

例子就是一个小孩在睡觉,当小孩醒过来之后,爸爸要喂奶,爷爷要
  • oWuGuanFengYue123
  • oWuGuanFengYue123
  • 2014年05月06日 11:45
  • 1615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java设计模式之观察者模式
举报原因:
原因补充:

(最多只允许输入30个字)