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

一个统一管理的例子,用观察者模式实现

    博客分类:
  • Web
 
阅读更多
如有这么一个需求
 

平台中需要实现一个统一管理的功能 

实现方式1:

平台中定义类 CommonQuery.java ,且有Map<key,Object> 如 put(1,new Query1())
个子类都注册 CommonQuery

在平台中执行的时候 ,会根据Map的值遍历 ,然后调用个子系统的方法


实现方式2:
采用观察者模式

示例代码如下:

QueryMain.java
package test02;

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;

public class QueryMain extends Observable
{

    private static QueryMain instance;

    public static QueryMain getInstance()
    {
        if (instance == null)
        {
            instance = new QueryMain();
        }
        return instance;

    }

    private QueryMain()
    {

    }

    private String starTime;
    /**
     * 查询的结果
     */
    private List<String> listAll = new ArrayList<String>();

    /**
     * 
     * 查询的参数
     * 
     * @param startTime
     * @author 
     * @date 2013-1-11 上午06:14:20
     */
    public void doQuery(String startTime)
    {
        this.starTime = startTime;
        this.listAll = new ArrayList<String>();
        this.setChanged();
        this.notifyObservers();
    }

    /**
     * @return the starTime
     */
    public String getStarTime()
    {
        return starTime;
    }

    /**
     * @param starTime
     *            the starTime to set
     */
    public void setStarTime(String starTime)
    {
        this.starTime = starTime;
    }

    /**
     * @return the listAll
     */
    public List<String> getListAll()
    {
        return listAll;
    }

    /**
     * @param listAll
     *            the listAll to set
     */
    public void setListAll(List<String> listAll)
    {
        this.listAll = listAll;
    }

}




AbsQuery.java

package test02;

import java.util.Observable;
import java.util.Observer;

public abstract class AbsQuery extends Observable implements Observer
{

    @Override
    public void update(Observable o, Object arg)
    {
        doQuery((QueryMain) o);
    }

    public abstract void doQuery(QueryMain queryMain);

}




Query01.java
package test02;


public class Query01 extends AbsQuery
{

    @Override
    public void doQuery(QueryMain queryMain)
    {
        // System.out.println("Query01 doQuery :" + queryMain.getStarTime());

        queryMain.getListAll().add("Query01....1");
        queryMain.getListAll().add("Query01....2");
        queryMain.getListAll().add("Query01....3");

    }

}




Query02.java
package test02;


public class Query02 extends AbsQuery
{

    @Override
    public void doQuery(QueryMain queryMain)
    {
        // System.out.println("Query02 doQuery :" + queryMain.getStarTime());

        queryMain.getListAll().add("Query02....1");
        queryMain.getListAll().add("Query02....2");
        queryMain.getListAll().add("Query02....3");

    }

}


Test.java
package test02;

public class Test
{
    public static void main(String[] args)
    {
        QueryMain queryMain = QueryMain.getInstance();

        Query01 query01 = new Query01();
        Query02 query02 = new Query02();

        queryMain.addObserver(query01);
        queryMain.addObserver(query02);

        QueryMain.getInstance().doQuery("2013");
        System.out.println("-------------");
        for (String s : queryMain.getListAll())
        {
            System.out.println(s);
        }
        
        QueryMain.getInstance().doQuery("2014");
        System.out.println("-------------");
        for (String s : queryMain.getListAll())
        {
            System.out.println(s);
        }
        
        
        
    }
}
  • 大小: 17.3 KB
分享到:
评论

相关推荐

    用C++ 实现设计模式之观察者模式

    观察者模式是一种软件设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在处理事件驱动和实时信息更新的系统中非常常见,如股票市场的...

    java实验策略规划模式、观察者模式和组合模式.pdf

    观察者模式是一种行为设计模式,用于定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。实验中,学校信息发布的实现就是观察者模式的实例。定义一个`Notice`...

    4种设计模式例子1

    观察者模式定义了一种一对多的依赖关系,当一个对象(主题)的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。例如,在教学场景中,班长作为观察者,当老师到来时通知所有同学。这一模式包含两个主要...

    常用设计模式java实现

    2. **观察者模式**:观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,`java.util.Observable`和`java.util....

    c#设计模式源码例子

    - 观察者模式(Observer):定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态模式(State):允许一个对象在其内部状态改变时改变它的行为,对象看...

    设计模式例子和PPT

    - 观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态模式(State):允许对象在其内部状态改变时改变其行为,对象看...

    faif python-patterns 使用Python实现一些设计模式的例子

    抽象工厂模式为一个产品族提供统一的接口,让客户端可以无须关心具体的产品实现,只关注于产品的使用。在Python中,通常通过接口定义和具体实现类来构建抽象工厂。 4. **建造者模式(Builder)**: 建造者模式将...

    Javascript 模式实例 观察者模式

    在园里有许多牛人都已经写过这些文章,不过大多的例子都是.NET,今天我要举一个JS的使用实例.有兴趣的朋友可以先了解一下一些牛人的,比如李会军大哥设计模式篇中观察者的那一节 ...

    二十一种设计模式java例子

    观察者模式是一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。代理模式则为其他对象提供一种代理以控制对这个对象的访问,它可以用于...

    patternDesign设计模式例子源码

    5. **观察者模式**:观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动编程,例如GUI组件间的交互。 6. **装饰器...

    软件设计模式的基本例子和笔记总结

    4. 观察者模式:观察者模式是一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java中提供了java.util.Observable和java.util.Observer...

    PHP 观察者模式的实现代码

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一种...同样,观察者也不必了解被观察者的具体实现,只需实现一个统一的更新接口即可。这种模式使得系统更加灵活,易于扩展,能够更好地应对需求变化。

    设计模式小例子

    - 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 责任链模式:避免请求的发送者和接收者之间的耦合,将请求封装为一个对象,沿着...

    java模式例子

    Java模式例子是一个深入探讨Java编程中设计模式应用的资源集合,它包含了一系列关于设计模式的实践示例。设计模式是软件工程中经过时间考验、在特定情境下解决常见问题的有效解决方案模板,它们代表了在软件设计过程...

    设计模式实例源码

    17. 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 18. 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 19. 中介...

    软件设计模式实验报告.pdf

    **单例模式**是一种保证一个类只有一个实例的设计模式。在上述实验中,通过创建`AppConfig`类来处理配置文件,单例模式的应用确保了在整个程序运行过程中,无论多少次调用,都只会有一个`AppConfig`实例。这样避免了...

    java设计模式例子讲解.doc

    - 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。 - 迭代子模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 责任链模式:...

    C#设计模式例子

    C#中的`System.ComponentModel.INotifyPropertyChanged`接口就是观察者模式的一个应用。 4. 适配器模式:将不兼容的接口转换为客户期望的接口,使得原本由于接口不兼容而不能一起工作的那些类可以协同工作。在C#中...

    Observer例子

    "Observer"模式是其中的一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在这个"Observer例子"中,我们将探讨如何在实际编程中应用...

    java 23种设计模式最全最简单的例子

    - 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 - 状态模式:允许对象在其内部状态改变时改变它的行为,看起来好像对象改变了它的...

Global site tag (gtag.js) - Google Analytics