设计模式--观察者模式





例子:以订阅博客发布为例子

package ObverserBlog;

/**
 * 封装的文章对象
 * <p>Title: Article</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午3:36:07
 * @version 1.0
 */
public class Article {
	private String articleTitle;
	private String articleContent;

	public String getArticleTitle() {
		return articleTitle;
	}

	public void setArticleTitle(String articleTitle) {
		this.articleTitle = articleTitle;
	}

	public String getArticleContent() {
		return articleContent;
	}

	public void setArticleContent(String articleContent) {
		this.articleContent = articleContent;
	}

}


package ObverserBlog;

import java.util.Observable;

/**
 * 被监听的用户对象的行为
 * <p>Title: BlogUser</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午3:37:01
 * @version 1.0
 */
public class BlogUser extends Observable{

	public void publishBlog(String articleTitle,String articleContent){
		Article art = new Article();
		art.setArticleTitle(articleTitle);
		art.setArticleContent(articleContent);
		System.out.println("博主:发表新文章,文章标题:" + articleTitle + ",文章内容:" + articleContent);
		
		this.setChanged();
		//传递对象给观察者
		this.notifyObservers(art);
	} 
}


package ObverserBlog;

import java.util.Observable;
import java.util.Observer;
/**
 * 观察者1
 * 自定义的观察者类
 * <p>Title: MyObserve</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午3:57:32
 * @version 1.0
 */
public class MyObserver1 implements Observer {

	/**
	 * 当被观察发生变化时的响应
	 * <p>Title: update</p>
	 * <p>Description: </p>
	 * @param o
	 * @param arg
	 * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
	 */
	@Override
	public void update(Observable o, Object object) {
        //获得被观察者传递过来的对象参数
	    Article article =	(Article)object;
	    System.out.println("观察者1收到的消息:........");
		System.out.println("博主发表了新的文章,快去看吧!");
		System.out.println("博客标题为:" + article.getArticleTitle());
		System.out.println("博客内容为:" + article.getArticleContent());
	}

}

package ObverserBlog;

import java.util.Observable;
import java.util.Observer;
/**
 * 观察者2
 * 自定义的观察者类
 * <p>Title: MyObserve</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月4日下午3:57:32
 * @version 1.0
 */
public class MyObserver2 implements Observer {

	/**
	 * 当被观察发生变化时的响应
	 * <p>Title: update</p>
	 * <p>Description: </p>
	 * @param o
	 * @param arg
	 * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
	 */
	@Override
	public void update(Observable o, Object object) {
        //获得被观察者传递过来的对象参数
	    Article article =	(Article)object;
	    System.out.println("观察者2收到的消息:........");
		System.out.println("博主发表了新的文章,快去看吧!");
		System.out.println("博客标题为:" + article.getArticleTitle());
		System.out.println("博客内容为:" + article.getArticleContent());
	}

}

package ObverserBlog;


public class MainClass {
	public static void main(String[] args) {
		BlogUser user = new BlogUser();
		//添加观察者1
		user.addObserver(new MyObserver1());
		//添加观察者2
		user.addObserver(new MyObserver2());
		//发布blog
		user.publishBlog("哈哈,博客上线了", "大家多来访问");
	}

}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值