这几天在看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 设计模式》
分享到:
相关推荐
总之,《设计模式之禅(第2版)》是一本值得深入研读的书籍,无论你是初涉软件设计的新手,还是经验丰富的开发者,都能从中获益匪浅。通过学习本书,你将能更好地理解和运用设计模式,提升自己的编程技能,为软件...
《Learning PHP设计模式》是由美国作家William Sanders撰写的一本面向初学者和中级PHP开发者的设计模式指南...无论你是初涉PHP还是有一定经验的开发者,《Learning PHP设计模式》都是你提升技能、扩展视野的宝贵资源。
《漫谈设计模式》是一本专为Java开发者深入理解设计模式而编写的书籍。设计模式是软件工程中的...无论你是初涉设计模式的新手,还是已经有一定经验的老手,这本书都值得一读,它将成为你在Java设计模式领域的得力助手。
3. **观察者模式**:`BroadcastReceiver`就是观察者模式的实例,它允许组件订阅和接收广播事件,提高了组件间的通信效率。 4. **适配器模式**:`Adapter`类在Android中广泛使用,如`ListView`的适配器,将数据源...
总的来说,这个压缩文件提供了一个全面的学习设计模式的资源库,无论你是初涉设计模式的新手还是寻求进一步提升的专家,都能从中受益。理解并应用设计模式将提升你的编程技巧,使你能够更好地应对复杂系统的设计挑战...
《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以独特的视觉化和易于理解的方式介绍了23种经典的设计模式。...无论你是初涉设计模式的新手,还是寻求提升的老兵,这本书都能为你提供宝贵的指导。
设计模式是经过实践验证的解决方案模板,可以解决常见的设计问题,如单例模式、工厂模式、观察者模式等。通过模式的应用,开发者可以更高效地重用代码,提高系统的可维护性和可扩展性。 此外,书中还介绍了如何将...
本书非常适合那些初涉设计模式或者希望深入理解设计模式的读者。它以一种非传统的学习方式呈现内容,结合了丰富的图表、幽默的对话和实际案例,使得学习过程不仅充满乐趣,而且容易理解。书中的例子和练习都以Java...
这部分可能详细讲解了几种常见的设计模式,如工厂模式、单例模式、观察者模式等,并展示了如何用UML来描绘这些模式。 4. **系统设计(364-370-系统设计.pdf)**:这部分内容可能涵盖了系统设计的原则和方法,包括...
在设计模式方面,书中可能涵盖了单例模式、工厂模式、观察者模式等常见的设计模式。单例模式保证一个类只有一个实例,常用于管理共享资源;工厂模式提供创建对象的接口,隔离了对象的创建过程;观察者模式则是一种...
例如,工厂模式用于创建对象,观察者模式用于事件驱动的通信,单例模式确保类只有一个实例。了解并熟练应用设计模式能提升软件的可维护性和扩展性。 6. **迭代与增量开发**: 敏捷开发采用小步快跑的方式,每个...
行为型如观察者模式、策略模式、责任链模式等。 - **工厂模式**:提供一个创建对象的接口,使代码与具体实现解耦,提高灵活性。在Java中,可以通过抽象工厂类或工厂方法实现。 - **单例模式**:保证一个类只有一个...
2. **设计模式与架构**:介绍常见的设计模式(如单例、工厂、观察者模式等),以及如何运用这些模式来构建可扩展、可维护的软件架构。 3. **数据结构与算法**:深入探讨数据结构(如数组、链表、树、图等)及其操作...
在设计模式方面,《C#经典经验集锦》可能会介绍一些常见的设计模式,如单例模式、工厂模式、观察者模式等,这些都是软件设计中不可或缺的部分,能够提升代码的可维护性和复用性。 此外,单元测试和持续集成也是现代...
设计模式是一种在特定情境下解决问题的标准化解决方案,如工厂模式、观察者模式等,它们提供了可重用的设计策略,提高了设计的质量和效率。 5.5 体系结构设计 体系结构设计是确定系统主要组件及其交互方式的过程,...
12. **设计模式**:设计模式是解决软件设计中常见问题的模板,如单例模式、工厂模式、观察者模式等,它们是成为优秀Java开发者的重要组成部分。 这份"java笔记与java核心内容解读"将详细阐述以上知识点,通过实例和...
面向对象的设计模式,如工厂模式、单例模式和观察者模式,也是书中重要的内容,这些模式能帮助程序员编写更高效、可维护的代码。 其次,书中会深入探讨Java的基础语法,包括变量、数据类型、运算符、控制流程语句...
8. **设计模式**:学习常见的23种设计模式,如工厂模式、单例模式、观察者模式等,提高代码的可维护性和扩展性。 9. **JVM原理**:了解JAVA虚拟机的工作机制,包括内存模型、垃圾收集、性能优化等方面。 10. **...
在面向对象设计模式方面,手册可能涵盖一些常见的设计模式,如工厂模式、单例模式、观察者模式等,这些都是提高代码可重用性和可扩展性的关键。 最后,手册还可能包含关于C++标准的发展历程,包括C++11、C++14、C++...
7. **设计模式**:在Delphi中实现常见的软件设计模式,如单例、工厂、观察者等,提高代码质量和可维护性。 8. **性能优化**:讨论如何编写高效代码,减少内存占用,提高程序运行速度。 9. **单元测试与自动化**:...