读书笔记——HeadFirst 设计模式

一、观察者模式

1、定义:观察者模式定义了对象的一对多依赖,这样一来,当一个对象状态改变状态时,它的所有依赖者都会收到通知并且自动更新。

实现观察者模式的方式很多,但以包含Subject(主题)与Observer(观察者)接口类的设计最常见。

 

2、类图:

 

3、松耦合:观察者模式提供了一种对象设计,让主题和观察者之间松耦合。当两个对象松耦合时,它们依然可以交互,但是不太清楚彼此实现的细节。松耦合的设计能够让我们建立有弹性的OO系统,更好的应对变化。因为它把对象之间的依赖降到了最低。

 

4、JDK中的实现:1)Swing JButton;2)Java.util.Obervable

 

二、装饰者模式

1、开放——关闭原则(open-closed):类应该对扩展开放,对修改关闭。

 

2、装饰者模式定义:装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

 

3、注意:1)装饰者和被装饰者具有相同的超类型;2)可以用一个或多个装饰者包装一个对象;3)装饰者和被装饰者具有相同的超类型,所以在任何需要原始对象(被包装的)场合,可以用装饰过的对象代替它;4)对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用你喜欢的装饰者装饰对象;5)装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的。

 

4、类图:

 

5、JDK中的应用:Java I/O。

可以看出,装饰者有一个不太好的地方,它常常会造成设计中有大量的小类,可能会造成使用此API的程序员的困扰。

 

三、工厂方法模式

(对于简单工厂和工厂方法的区分,有点模糊)

工厂方法模式

1、工厂方法模式定义:工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

 

2、类图:

 

3、特点:共产方法让子类决定要实例化的类是哪一个,即在编写创建者类时,不需要知道实际创建的产品是哪一个。工厂方法模式将产品的“实现”从“使用”中解耦,对于增加或者改变具体的产品,Creator都不会受到影响。

 

4、好处:1)将创建对象的代码集中在一个对象或方法中,可以避免代码的重复,并且方便维护;2)客户在实例化对象时,只会依赖于接口,而非具体类,符合依赖倒置原则;3)让代码更具有弹性,便于以后的拓展。

依赖倒置原则(DI):要依赖抽象,不要依赖具体类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值