`
keller
  • 浏览: 48942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

observer设计模式的java实现

阅读更多

observer模式定义对象间的一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。JDK里提供的observer设计模式的实现由java.util.Observable类和java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标(subject)角色。
下面给出一个代码示例:
package kellerdu.demo;

import java.util.*;

/**
 * <p>
 * 使用Observer模式的例子。
 * 自己的手机号码更改后,自己的朋友自动得到通知。
 *  </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ObserverDesignPattern extends Observable {
    public ObserverDesignPattern() {
        super();
        //有两个朋友
        addFriend(new Friend("Tom"));
        addFriend(new Friend("Jerry"));
    }
   
    public void addFriend(Friend n){
        super.addObserver(n);
    }
    /**
     * 手机号码改变
     * @param l long
     */
    public void modifyPhoneNumber(final long l){
        /*
         *表明状态已经改变,不调用不会通知观察者
         */
        setChanged();
        //通知其他人自己的号码改变
        notifyObservers(new Long(l));
    }
   
    class Friend implements Observer{
        private String name;
        /**
         * @param name 朋友的姓名
         */
        public Friend(String name) {
            this.name=name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
       public void update(Observable o, Object arg) {
          if(arg instanceof Long){
              System.out.println(name+"已经知道你的手机号码改为:"+arg);
          }
       }
    }
    
   
    public static void main(String[] args) {
        ObserverDesignPattern op = new ObserverDesignPattern();
        //更改手机号码
        System.out.println("我手机号码更改为13516816888!");
        op.modifyPhoneNumber(Long.parseLong("13516816888"));
    }
}

程序运行结果:
我手机号码更改为13516816888!
Jerry已经知道你的手机号码改为:13516816888
Tom已经知道你的手机号码改为:13516816888

分享到:
评论

相关推荐

    Observer设计模式实例

    Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...

    常用设计模式java实现

    设计模式是软件工程中经过长期实践总结出的通用解决方案,它们描述了在特定情况下如何解决...通过阅读和学习提供的"常用设计模式java实现"压缩包中的例子,可以更好地理解和实践这些设计模式,从而提升Java编程技能。

    23三种设计模式java实现

    下面将详细介绍这三类设计模式以及它们在Java中的实现。 1. **创建型设计模式** - **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定(Double-Checked Locking)或者静态...

    OBserver模式设计实现

    在描述中提到的"Head First模式设计用的是Java",可能是指书中通过Java语言讲解了观察者模式的基本概念和实现方式,而"实现观察者模式使用C++"则意味着我们将讨论如何在C++环境中实现同样的设计模式。 观察者模式的...

    设计模式Java版各个实现代码

    本资料集“设计模式Java版”包含了各种设计模式的实现代码,旨在帮助学习者深入理解和应用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,单例模式可以通过懒汉式(线程不安全...

    设计模式之观察者模式Java实现

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    23种设计模式的JAVA实现

    本资料提供了23种设计模式的Java实现,是学习和理解设计模式的宝贵资源。 1. **单例模式(Singleton)**:保证一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定、静态内部类和枚举等方式实现...

    设计模式Java实现

    "设计模式Java实现"是一个专注于将这些模式应用到Java语言中的资源。这个压缩包可能包含了各种设计模式的Java源代码示例,帮助开发者理解和掌握如何在实际项目中应用这些模式。 1. **工厂模式**: 工厂模式是一种...

    23种设计模式的Java实现

    设计模式是软件工程中经过长期实践总结出的通用解决方案,它们是...以上23种设计模式在Java实现中,通常涉及面向对象的特性,如继承、多态、封装等。理解并熟练应用这些模式,有助于编写出更加灵活、易于维护的代码。

    设计模式-Java语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...

    设计模式java实现代码

    在这个"设计模式java实现代码"的压缩包中,我们可以期待找到各种设计模式的Java代码示例。 1. **单例模式**(Singleton):确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常使用双重检查锁定(Double...

    23种设计模式的java实现源代码.rar

    这个压缩包“23种设计模式的java实现源代码.rar”包含了Java语言实现的全部23个经典设计模式,下面我们将逐一探讨这些设计模式及其在Java中的实现。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供...

    23种设计模式java实现

    adapter bridge build chainOfResp command decorator factory iterator mediator observer proxy state visitor 设计模式,java实现,如有纰漏请指正,谢谢

    JAVA23中设计模式

    ### JAVA23中设计模式详解 #### 一、概述 设计模式是在软件设计过程中解决常见问题的一套可复用的解决方案。《JAVA23中设计模式》是一份针对Java程序员的指南,旨在通过一系列示例和理论讲解,帮助读者理解和掌握...

    设计模式java 版本

    本资料包含23种经典设计模式的Java实现,这些模式都是基于面向对象原则的。 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过双重检查锁定(Double-Checked Locking)或静态...

    Observer模式的传统实现和AOP实现

    对Observer模式的实现,引入后可直接使用。 包括传统实现和遵循AOP思想的实现

    常见的十种设计模式Java工程文件

    本资源包含了十个经典的Java实现设计模式,这对于理解和掌握面向对象系统分析与设计有着极大的帮助。以下是这十个设计模式的详细解释: 1. **Decorator模式**:Decorator模式允许动态地给一个对象添加一些新的行为...

    JAVA设计模式chm文档

    设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    23种设计模式JAVA实现,例子通俗易懂

    本资源提供了23种设计模式的Java实现,通过具体的代码示例帮助开发者深入理解并掌握这些模式。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。防止多线程环境下多个实例的产生,常用于...

    设计模式Java版,完整的源码加pdf书籍

    本资源包含的设计模式Java版是面向Java开发者的重要学习资料,旨在帮助他们提升代码质量和可维护性。 设计模式的核心在于重用经过验证的解决方案,而不是从零开始。这些模式通常分为三类:创建型、结构型和行为型。...

Global site tag (gtag.js) - Google Analytics