九大常用设计模式学习-观察者模式

设计模式学习记录:一句话+代码体会设计模式。

九大常用设计模式

单例模式:https://blog.csdn.net/qq_37902949/article/details/87903569

简单工厂/静态工厂方法模式:https://blog.csdn.net/qq_37902949/article/details/87931684

工厂方法模式:https://blog.csdn.net/qq_37902949/article/details/87931610

代理模式:https://blog.csdn.net/qq_37902949/article/details/87931864

模板方法模式:https://blog.csdn.net/qq_37902949/article/details/87931912

观察者模式:https://blog.csdn.net/qq_37902949/article/details/87931995

适配器模式:https://blog.csdn.net/qq_37902949/article/details/87931940

装饰者模式:https://blog.csdn.net/qq_37902949/article/details/87931800

策略模式:https://blog.csdn.net/qq_37902949/article/details/87932047

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

一个公众号流程例子体会观察者模式 。

定义主题接口

/**
 * 定义主题接口
 */
public interface Subject {
	// 添加观察者
	boolean addObserve(Observer observer);
	
	// 移除观察者
	boolean removeObserver(Observer observer);
	
	// 通知所有观察者
	void notice(String message);
}

抽象观察者 

/**
 * 抽象观察者
 */
public interface Observer {
	// 定义更新自己的方法
	void update(String message);
}

 公众号操作

/**
 * 公众号
 */
public class Subscription implements Subject {
	
	private List<Observer> observerList = new ArrayList<>();

	@Override
	public boolean addObserve(Observer observer) {
		return observerList.add(observer);
	}

	@Override
	public boolean removeObserver(Observer observer) {
		return observerList.remove(observer);
	}

	@Override
	public void notice(String message) {
		for (Observer observer : observerList) {
			observer.update(message);
		}
	}
}

微信用户 

/**
 * 微信用户类
 */
public class WechatUser implements Observer {
	
	private String name;
	
	public WechatUser(String name) {
		this.name = name;
	}

	@Override
	public void update(String message) {
		System.out.println(name+"->"+message);
	}
}

测试 

/**
 * 测试观察者设计模式
 */
public class TestObserver {
	public static void main(String[] args) {
		// 创建一个公众号
		Subscription sub = new Subscription();
		// 创建微信用户
		WechatUser user1 = new WechatUser("张三");
		WechatUser user2 = new WechatUser("李四");
		WechatUser user3 = new WechatUser("王五");
		WechatUser user4 = new WechatUser("田七");
		// 让其订阅公众号
		sub.addObserve(user1);
		sub.addObserve(user2);
		sub.addObserve(user3);
		sub.addObserve(user4);
		// 公众号发出更新通知
		sub.notice("公众号更新了国庆放假通知......");
		// 退订
		sub.removeObserver(user2);
		System.out.println("==========================");
		// 公众号发出更新通知
		sub.notice("公众号更新了国庆放假通知......");
	}
}

设计模式是软件开发人员在软件开发过程中面临一般问题的解决方案。

 设计模式还是要慢慢体会。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值