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

初涉设计模式--观察者模式

    博客分类:
  • JAVA
阅读更多
这几天在看ssh整合的一些具体注意事项合乱码问题,设计模式也没来得及看了,号不容易有点空闲时间,看了看观察者模式:
观察者模式:定义了对象之间的一对多依赖,这样一来,当对象改变状态时,它的所有依赖者都会收到通知并自动更新.
还学到了一个新的设计原则:松耦合设计。
下面看代码:

1.定义主题接口
public interface Subject {
public void rigisterObserver(Observer o);//注册观察者

public void removeObserver(Observer o);//取消观察观察者

public void notifyOberver();
}

2.定义观察者接口。
public interface Observer {
public void update(double tem, double hum, double pre);
}
3.定义观察者另外实现的接口。
public interface DisplayElement {
public void display();
}

4.定义主题。
import java.util.ArrayList;

public class WeatherData implements Subject {

private double tem;// 但前温度
private double hum;// 但前湿度
private double pre;// 但前气压
private ArrayList<Observer> observers;

public WeatherData() {
observers = new ArrayList<Observer>();
}

public void measureChanged() {
this.notifyOberver();
}

/**
* 模拟气象装置
*/
public void setMeasurement(double tem, double hum, double pre) {
this.tem = tem;
this.hum = hum;
this.pre = pre;
measureChanged();
}

public void notifyOberver() {
for (Observer o : observers) {
o.update(tem, hum, pre);
}

}

public void removeObserver(Observer o) {
int i = observers.indexOf(o);
if (i >= 0) {
observers.remove(i);
}

}

public void rigisterObserver(Observer o) {
observers.add(o);

}

}
5.定义观察者。
public class CurrentConditionsDisplay implements Observer, DisplayElement {
@SuppressWarnings("unused")
private Subject weatherData;
private double tem;
private double hum;

public CurrentConditionsDisplay(Subject weatherData) {
this.weatherData = weatherData;
weatherData.rigisterObserver(this);// 注册
}

public void update(double tem, double hum, double pre) {
this.tem = tem;
this.hum = hum;
display();
}

public void display() {
System.out.println("当前温度:" + this.tem + "当前湿度:" + this.hum);

}

}

6.测试。
public class Test {

public static void main(String[] args) {
Subject weatherData = new WeatherData();

@SuppressWarnings("unused")
Observer currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
((WeatherData) weatherData).setMeasurement(10,10,10);

}

}

以上代码参考《headfirst 设计模式》

0
0
分享到:
评论

相关推荐

    设计者模式之禅第二版

    总之,《设计模式之禅(第2版)》是一本值得深入研读的书籍,无论你是初涉软件设计的新手,还是经验丰富的开发者,都能从中获益匪浅。通过学习本书,你将能更好地理解和运用设计模式,提升自己的编程技能,为软件...

    Learning PHP设计模式 ([美]William Sanders) 中文pdf扫描版

    《Learning PHP设计模式》是由美国作家William Sanders撰写的一本面向初学者和中级PHP开发者的设计模式指南...无论你是初涉PHP还是有一定经验的开发者,《Learning PHP设计模式》都是你提升技能、扩展视野的宝贵资源。

    《漫谈设计模式》—Java设计模式的好帮手

    《漫谈设计模式》是一本专为Java开发者深入理解设计模式而编写的书籍。设计模式是软件工程中的...无论你是初涉设计模式的新手,还是已经有一定经验的老手,这本书都值得一读,它将成为你在Java设计模式领域的得力助手。

    Android源码设计模式解析与实战 pdf高清版

    3. **观察者模式**:`BroadcastReceiver`就是观察者模式的实例,它允许组件订阅和接收广播事件,提高了组件间的通信效率。 4. **适配器模式**:`Adapter`类在Android中广泛使用,如`ListView`的适配器,将数据源...

    设计模式 打包

    总的来说,这个压缩文件提供了一个全面的学习设计模式的资源库,无论你是初涉设计模式的新手还是寻求进一步提升的专家,都能从中受益。理解并应用设计模式将提升你的编程技巧,使你能够更好地应对复杂系统的设计挑战...

    Head.First设计模式_PDF

    《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以独特的视觉化和易于理解的方式介绍了23种经典的设计模式。...无论你是初涉设计模式的新手,还是寻求提升的老兵,这本书都能为你提供宝贵的指导。

    UML和模式应用(PDF)

    设计模式是经过实践验证的解决方案模板,可以解决常见的设计问题,如单例模式、工厂模式、观察者模式等。通过模式的应用,开发者可以更高效地重用代码,提高系统的可维护性和可扩展性。 此外,书中还介绍了如何将...

    Head First Design Patterns(英文版)

    本书非常适合那些初涉设计模式或者希望深入理解设计模式的读者。它以一种非传统的学习方式呈现内容,结合了丰富的图表、幽默的对话和实际案例,使得学习过程不仅充满乐趣,而且容易理解。书中的例子和练习都以Java...

    大象—ThinkinginUML含光盘

    这部分可能详细讲解了几种常见的设计模式,如工厂模式、单例模式、观察者模式等,并展示了如何用UML来描绘这些模式。 4. **系统设计(364-370-系统设计.pdf)**:这部分内容可能涵盖了系统设计的原则和方法,包括...

    Java面向对象精髓编程pdf版.zip

    在设计模式方面,书中可能涵盖了单例模式、工厂模式、观察者模式等常见的设计模式。单例模式保证一个类只有一个实例,常用于管理共享资源;工厂模式提供创建对象的接口,隔离了对象的创建过程;观察者模式则是一种...

    敏捷软件开发:原则、模式与实践

    例如,工厂模式用于创建对象,观察者模式用于事件驱动的通信,单例模式确保类只有一个实例。了解并熟练应用设计模式能提升软件的可维护性和扩展性。 6. **迭代与增量开发**: 敏捷开发采用小步快跑的方式,每个...

    java及java EE面试大全

    行为型如观察者模式、策略模式、责任链模式等。 - **工厂模式**:提供一个创建对象的接口,使代码与具体实现解耦,提高灵活性。在Java中,可以通过抽象工厂类或工厂方法实现。 - **单例模式**:保证一个类只有一个...

    软件设计师教程(很不容易得到滴,免费给大家共享出来)

    2. **设计模式与架构**:介绍常见的设计模式(如单例、工厂、观察者模式等),以及如何运用这些模式来构建可扩展、可维护的软件架构。 3. **数据结构与算法**:深入探讨数据结构(如数组、链表、树、图等)及其操作...

    c#经典经验集棉,是每个net,必经之路

    在设计模式方面,《C#经典经验集锦》可能会介绍一些常见的设计模式,如单例模式、工厂模式、观察者模式等,这些都是软件设计中不可或缺的部分,能够提升代码的可维护性和复用性。 此外,单元测试和持续集成也是现代...

    软件工程课件:第5章 分析设计Analyze & Design.ppt

    设计模式是一种在特定情境下解决问题的标准化解决方案,如工厂模式、观察者模式等,它们提供了可重用的设计策略,提高了设计的质量和效率。 5.5 体系结构设计 体系结构设计是确定系统主要组件及其交互方式的过程,...

    java笔记与java核心内容解读

    12. **设计模式**:设计模式是解决软件设计中常见问题的模板,如单例模式、工厂模式、观察者模式等,它们是成为优秀Java开发者的重要组成部分。 这份"java笔记与java核心内容解读"将详细阐述以上知识点,通过实例和...

    Java.for.Programmers.2ed.2012

    面向对象的设计模式,如工厂模式、单例模式和观察者模式,也是书中重要的内容,这些模式能帮助程序员编写更高效、可维护的代码。 其次,书中会深入探讨Java的基础语法,包括变量、数据类型、运算符、控制流程语句...

    中文文章(JAVA).rar

    8. **设计模式**:学习常见的23种设计模式,如工厂模式、单例模式、观察者模式等,提高代码的可维护性和扩展性。 9. **JVM原理**:了解JAVA虚拟机的工作机制,包括内存模型、垃圾收集、性能优化等方面。 10. **...

    C++中文离线手册(修正版第二版)

    在面向对象设计模式方面,手册可能涵盖一些常见的设计模式,如工厂模式、单例模式、观察者模式等,这些都是提高代码可重用性和可扩展性的关键。 最后,手册还可能包含关于C++标准的发展历程,包括C++11、C++14、C++...

    Delphi书籍打包

    7. **设计模式**:在Delphi中实现常见的软件设计模式,如单例、工厂、观察者等,提高代码质量和可维护性。 8. **性能优化**:讨论如何编写高效代码,减少内存占用,提高程序运行速度。 9. **单元测试与自动化**:...

Global site tag (gtag.js) - Google Analytics