导览
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 装饰者模式
- 观察者模式
- 建造者模式
- 单例模式
- 代理模式
- 适配器模式
若有雷同全部来自java设计模式精讲,经过个人理解修改完成
简单工厂模式
不属于GOF23种设计模式但是抽象工厂模式和工厂方法模式都是由他演变而来的
定义:
由一个工厂对象决定创建出哪一种产品类的实例
使用场景:
创建的对象比较少,客户端只知道传入对象的参数,对于如何创建对象不关心
优点:
只需要传入正确的参数就可以获取你所需要的对象,无需知道创建细节
缺点:
工厂类的职责相对过重,增加新的产品的时候要修改工厂类的判断逻辑
总结:
在应用层中不要直接依赖创建类,而是通过创建中间工厂来选择相对应的创建类
UML图解析:
利用反射实现判断传入的中间的课程类型,通过实现课程工厂类来实现解开Test(应用函数对工厂类的的创建),但是在增加新的课程的时候不需要修改其他的类
观察者模式
定义:
定义了对象一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,他的所有依赖者就是观察者都会收到通知并且跟新
使用场景:
关联行为场景,建立一套触发机制
优点:
观察者和被观察者之间建立一个抽象的耦合,观察者模式支持广播通信
缺点:
观察这之间有躲过的细节依赖,提高时间消耗及陈旭复杂度,使用要得当避免循环调用
总结:
java提供了一个OBSERVABLE和OBSER
代码实例介绍:
course类来表示被观察的对象,他继承了Observable类,这个类提供了两个私有属性一个叫changed,表示被观察者也就是这里的course类在发生变化的时候这个值会变更成true,第二各私有属性是obs,是一个Vector一个动态数组,用于储存观察者也就是下面的teacher类,可以看到他直接在初始化构造器的时候直接初始化了,另外这个类还提供了addObserver用于添加观察者对象,deleteObserver删除观察者等对象
teacher用于表示观察者,也是是消息传递到达的对象,update复写他爹Observer 的方法,表示在接收到改变的状态的时候会收到两个默认的参数,第一个参数Observable o表示在被观察的对象是哪个这里就是course,第二个参数arg就是被观察者传来的数据信息,就是下面的question,重写的update方法就是表示观察者在接收到被观察对象之后默认执行的语句
question用于表示课程变动的时候向teacher发送的消息格式
最后测试类
UML图:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!