Head first设计模式第三天学习笔记

设计原则:

开放-关闭原则:类应该对扩展开放,对修改关闭。

 

装饰者模式的简单认知:

1)装饰者和被装饰对象有相同的超类。

2)我们可以用一个或多个装饰者包装一个对象。

3)既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装的)的场合都可以使用装饰过的对象来代替。

4)装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。

5)对象可以在任何时候被装饰,所以可以在运行时动态地,不限量地用自己喜欢的装饰者来装饰对象。

 

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

 

通常装饰者模式是采用抽象类的,但在java中可以使用接口。虽然这么说,但是当我们要使用对象的时候,该对象“已经”是一个抽象对象了,而且我们应该尽量避免修改现有代码,所以,如果抽象对象运行的好好的,就别去修改它。

 

装饰模式的缺点:以JAVA I/O为例,利用装饰者模式,常常会造成设计中有大量的小类,数量太多时,会造成使用此API程序员的困扰。所以在使用装饰者模式实例化组件时,会增加代码的复杂度。一旦使用装饰者模式,不仅需要实例化组件,同时还要将组件包装进装饰者中,大大增加了代码编写的难度。而且由于装饰者模式有类型上的需求问题,所以在使用装饰者模式时需要小心谨慎,因为有些代码依赖于特定的类型。

 

装饰者模式的使用往往是和工厂模式一块使用的,工厂模式可以起到优化装饰者模式的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值