# android-esign-pattern **Repository Path**: open-wind-and-rain/android-esign-pattern ## Basic Information - **Project Name**: android-esign-pattern - **Description**: 平风造雨-安卓设计模式示例 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-22 - **Last Updated**: 2022-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 观察者模式 观察者模式是一种非常常见的模式,它最常用在GUI系统和订阅发布系统。像Android系统中的View的各种listener用到的就是观察者模式。使用观察者模式一个重要的原因就是解耦,将被观察者和观察者之间解耦,使得他们之间的依赖减小。 1、定义: 观察者模式是定义一种一对多的依赖关系,使得当一个对象状态改变时,所有依赖于它的对象都会受到通知,然后依赖于它的对象可以根据需求去做相应的操作。 2、UML类图 观察者模式UML类图如下: Subject:抽象主题,这是个抽象类,它是被观察的角色。抽象主题把所有观察者对象的引用保存在一个集合里面,抽象主题提供接口,可以增加和删除观察者对象。 ConcreteSubject:抽象主题的实现类,具体主题,也叫具体被观察者。在具体主题内部状态发生改变时,给所有注册过的观察者发送通知。 Observe:抽象观察者,观察者的抽象类,定义了更新接口,当被观察者状态发生改变时,会受到通知更新自己。 ConcreteObserve:具体观察者,该角色实现抽象观察者所定义的更新接口,当收到被观察者通知时更新自己。 在实际的应用中,我们也不一定说非要严格按照上面的UML类图中描述的那样得有:抽象主题、抽象主题实现、抽象观察者、具体观察者。对于一般的情况我们可以省略抽象主题,只用具体主题。 3、实例 我们以一个Android的项目来举例说明观察者模式。情景是这样的:观察者观察用户点击返回键,当用户点击返回键时,观察者要收到通知。 # 迭代器模式 # 单例模式