设计模式中 观察者模式在java中已经实现,只需继承Observable类,然后实现Observer接口即可。
设计模式学习最重要是先明白应用场景,然后再将模式引用进来即可事半功倍!
涉及实际场景:
如某SNS网站都有相册模块,对相册的评论及赞也是很多网站都会加入的功能。
评论者看到一个美女图片,觉得不错,赞一个!
在赞的同时:
1.我们有一个计数功能,来统计每一个相片的赞数量;
2.我们给美女一个message,告诉她有多了一个倾慕者;
此时即可用到观察者模式。
不废话,上源码:
import java.util.Observable;
/**
* 观察者模式
* @author
*
*/
public class CommendThePicture extends Observable{
//相片ID
int picId;
//讯息
String message;
public CommendThePicture(){
}
//赞美女图片
public void toCommendPic(int picId){
System.out.println("赞美女的照片:");
setChanged();
notifyObservers(picId);
}
//传送MESSAGE
public void toSendMessage(String message){
System.out.println("message如下:");
setChanged();
notifyObservers(message);
}
public int getPicId() {
return picId;
}
public void setPicId(int picId) {
this.picId = picId;
}
}
import java.util.Observable;
import java.util.Observer;
/**
* 计数
* @author
*
*/
public class CountObserver implements Observer{
@Override
public void update(Observable o, Object arg) {
if(arg instanceof Integer){
commendNumDao((Integer)arg);
}
}
//调用数据层获取统计数据
public void commendNumDao(int picId){
System.out.println("ID="+picId+"的美女照片现在一共有222个人流口水!");
}
}
import java.util.Observable;
import java.util.Observer;
/**
* message
* @author
*
*/
public class MessageObserver implements Observer{
@Override
public void update(Observable o, Object arg) {
if(arg instanceof String){
sayToGirl((String)arg);
}
}
public void sayToGirl(String message){
System.out.println("对MM表白:"+message);
}
}
/**
* test
* @author
*
*/
public class Test {
public static void main(String[] argv){
CommendThePicture c = new CommendThePicture();
//相片ID
int picId = 1200;
String message = "好漂亮的MM哦!";
c.addObserver(new CountObserver());
c.addObserver(new MessageObserver());
c.toCommendPic(picId);
c.toSendMessage(message);
}
}
运行结果如下:
赞美女的照片:
ID=1200的美女照片现在一共有222个人流口水!
message如下:
对MM表白:好漂亮的MM哦!
分享到:
相关推荐
总的来说,HeadFirst设计模式的学习笔记2关于观察者模式的演示,旨在帮助开发者理解如何使用观察者模式来构建可扩展的系统。通过实际的代码示例,我们可以更深入地掌握这一模式,并将其应用到日常开发中,提升代码的...
在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...
在Head First的观察者模式学习笔记中,我们可以深入理解这个模式的原理和应用。首先,观察者模式涉及到两个主要的角色:主题(Subject)和观察者(Observer)。主题是被观察的对象,它可以是任何具有可变状态的对象...
事件和事件处理程序是实现观察者模式的一种方式,允许松耦合的编程风格。 最后,函数成员(function members)提供了操作类数据的机制。函数成员包括方法、属性、构造函数和终结器、运算符和索引器等。方法类似于...
在《深入浅出设计模式》的学习笔记中,我们可以看到几种关键的设计模式及其应用,包括策略模式、观察者模式、装饰者模式、工厂模式和抽象工厂模式。 1. **策略模式**: - 策略模式的核心在于将算法族封装在独立的...
本学习笔记将重点关注“观察者模式”,这是一种行为设计模式,用于在对象之间定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的主要组成部分包括...
### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...
以及行为型中的策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。 设计模式的实施遵循六项核心原则: 1. **开闭原则**:软件...
行为型模式关注对象之间的职责分配,如策略模式(Strategy)、观察者模式(Observer)和责任链模式(Chain of Responsibility)。策略模式定义了一族算法,将每个算法封装起来,使它们可以互相替换,让算法的变化...
6. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java中的`Observer`和`Observable`接口就是这种模式的体现。 7. **装饰器模式**:...
8. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 9. **职责链模式**:将请求沿着处理者链进行传递,直到某个处理者处理该请求,使得...
设计模式是解决常见编程问题的模板,Java开发者应该熟悉常见的设计模式,如单例、工厂、观察者、装饰器、适配器等。这些模式能够提高代码的可读性、可维护性和复用性。 6. **概念区别(概念区别.md)**: 这个...
10. 观察者模式(Observer Pattern):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 11. 备忘录模式(Memento Pattern):在不破坏封装的前提下,...
Java 线程学习笔记 Java 线程创建有两种方法: 1. 继承 Thread 类,重写 run 方法:通过继承 Thread 类并重写 run 方法来创建线程,这种方法可以使线程具有自己的执行逻辑。 2. 实现 Runnable 接口:通过实现 ...
### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...
C#设计模式学习笔记是一份详尽的资源,适合任何希望深入了解如何在C#编程中应用设计模式的开发者。这份笔记涵盖了多种设计模式,旨在提升代码的可读性、可维护性和可扩展性,这些都是软件开发中至关重要的要素。 ...
此外,还有一些其他的重要模式,如观察者模式(Observer),它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。职责链模式(Chain of Responsibility)让多...
设计模式是解决常见编程问题的模板,如单例模式、工厂模式和观察者模式。最后,笔记可能会介绍Java标准库的一些重要部分,如JDBC(Java数据库连接)用于数据库操作,或者Swing和JavaFX用于构建图形用户界面。 每道...