`
flysnail
  • 浏览: 92805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对设计模式—Observer模式的认识

阅读更多
今天上班偷偷的把qq打开了,一会收到许多群里发的消息,这让我想到了Observer模式
。 Observer模式的功用,是希望两个(或多个)对象,我们称之为Subject和Observer,当一方的状态发生改变的时候,另一方能够得到通知。也就是说,作为Observer的一方,能够监视到Subject的某个特定的状态变化,并为之做出反应。
我对观察者理解就是一个中心点把所有变化的信息都收集上来,这个中心点有一个名单,根据名单把所有变化的信息散发出去。下面是对学生和老师发送的会议通知:
public interface Subject //
{
    public void register(Object object);
    public void remove(Object object);
    public void nofiyObserver();
    public void setMeeting(String meeting);
}

public class SubjectCenter implements Subject
{
    private List<Object> list = new ArrayList<Object>();
    private String meeting;
     
    public void register(Object object);
    {
         list.add(object);//survey name list 
    }

    public void remove(Object object);
    {
       if(list.indexOf(object) > 0) //remove name list
          list.remove(i);
    }

    public void nofiyObserver();
    {
       for(int i = 0;i < list.size();i++)
       {
            Observer observer =(Observer)list.get(i);
            //nofiy student and teacher join to meeting 
            observer.update(meeting);
       }
    }

    public void setMeeting(Sting meet)
    {
       this.meeting = meeting;//the school have a meeting;
       nofiyObserver();      // send  meeting message
    }
}

public interface Observer
{
   public void update(String info);
}

public class  Student implements Observer
{
   public void update(String info)
   {
      System.out.println("Hi Guys ,Today have a meeting about" +info);
   }
}

public class Teacher implements Observer
{
   public void update(String info)
   {
      System.out.println("Hi Sir,Today have a meeting about"+info);
   } 

}

public class TestObserver
{
   public static void main(String[]args)
   {
      Subject subject = new SubjectCenter();
      Oberver student = new Student();
      Oberver teacher = new Teacher();
      subject.register(student);//add student observer
      subject.register(teacher); //add teacher observer
      subject.setMeeting("Wrap-up meeting");
   }
}

4
1
分享到:
评论
2 楼 flysnail 2008-11-29  
呵呵,失误。谢谢。
1 楼 langyu 2008-11-14  
setMeeting还是setInfo?remove方法里面的i从哪来的?
你那不报错吗?

相关推荐

    JavaScript 设计模式 azw3

    《JavaScript设计模式》是JavaScript设计模式的学习指南。全书分为14章。首先介绍了什么是模式、模式的结构、类别...通过阅读本书,他们将能够提高对设计模式的认识,并学会如何将设计模式应用到JavaScript编程语言中。

    设计模式大全,带你全面认识设计模式

    "设计模式大全,带你全面认识设计模式"这个资源很可能是为了帮助初学者和有经验的开发者深入理解并掌握设计模式的精髓。 设计模式通常分为三大类:创建型、结构型和行为型模式。创建型模式主要关注对象的创建过程,...

    二十三种设计模式【PDF版】

    1.设计模式更抽象,J2EE 是具体的产品代码,我们可以接触到,而设计模式在对每个应用时才会产生具体代码。 2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入...

    常见的软件设计模式详解

    以下是对标题和描述中提及的四种设计模式的详细解释: 1. **策略模式**: 策略模式的核心思想是将算法的选取与使用算法的业务逻辑解耦。在策略模式中,定义一系列可相互替换的算法,并封装在各自独立的策略类中。...

    C++设计模式精解

    从提供的文件信息中我们可以提取到的IT知识点主要集中在C++设计模式方面。具体的知识点可以分解为以下几点: ...同时,也能对学习设计模式的过程有一个更全面的认识,从而更好地掌握这些设计思想。

    深入浅出设计模式样章

    《深入浅出设计模式样章》是一本专为软件开发者准备的指南,旨在帮助读者理解和掌握设计模式这一核心编程概念...样章虽然只是全书的一部分,但已经足够让读者对设计模式有初步的认识,并激发他们进一步深入研究的兴趣。

    C#23种设计模式_示例源代码及PDF

    装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案, 装饰模式 提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由 一些基本功能的排列组合而产生...

    23种设计模式(C++).pdf

    而在讨论设计模式时,双分派的概念可以进一步提升对Visitor模式的认识。设计模式的重要性不言而喻,它们是软件设计中不可或缺的工具,能够使开发者更加高效地进行面向对象的分析和设计。 在本书的附录部分,作者...

    Observer(观察者模式)学习源码

    Observer模式,也称为订阅或发布-订阅模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件...

    新版设计模式手册-笔记

    《新版设计模式手册》中的笔记通过21个设计模式的概念图,直观地展示了这些模式的结构和交互方式,帮助读者形成清晰的认识。同时,生活类比将复杂的编程概念与日常经验相结合,使学习更加生动有趣。例如,单例模式...

    ASP.NET设计模式

    在详细探讨***设计模式之前,首先要了解***作为一种用于构建动态网站、...需要注意的是,在阅读和应用《***设计模式》时,应保持对模式适用场景和限制的认识,避免在不适合的场景下生搬硬套,反而降低软件设计的质量。

    Head.First设计模式_PDF.part1

    第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、Templat Method、Iterator、Composite、State、Proxy。最后三章比较...

    javascript 设计模式

    这些书籍能够帮助开发者从不同的角度和深度来理解JavaScript,加深对语言特性的认识,从而更好地应用设计模式。 这本书适合希望提高自己在设计模式方面知识,并且计划将这些知识应用于JavaScript编程中的专业开发者...

    c#设计模式随书源码.rar

    这些设计模式的源码示例将帮助你深入理解每种模式的核心思想和应用场景,通过实际编码加深对设计模式原理的认识,提升软件开发的灵活性和可维护性。学习并熟练运用这些模式,将有助于你编写出更高质量的C#代码。

    Raywendich (Design Patterns by Tutorials) 代码

    总之,《Raywendich设计模式实战教程》的源代码提供了一个绝佳的学习平台,它不仅涵盖了设计模式的实践应用,还结合了Swift 4的特性,让开发者能够更好地掌握面向对象编程的精髓,同时深化对数据结构和算法的认识。...

    Pro-Objective-C-Design-Patterns-for-iOS

    这本书覆盖了多种经典的设计模式,如单例模式(Singleton)、抽象工厂模式(Abstract Factory)、责任链模式(Chain of Responsibility)和观察者模式(Observer)。同时,它还探讨了一些相对不太为人所熟知但同样...

Global site tag (gtag.js) - Google Analytics