这里我不会告诉你什么是装饰者模式的概念,假如你不是为了考试的话,你也没必要知道其概念,就像你没必要书的概念(一本印有很多字的册子,有用的没用的,..........)一样。
装饰者模式,很明显是用来装饰的。
1.为什么有装饰者模式
面向对象中有一个很基本原则:对修改关闭,对扩展开发,就是说为了实现某个功能模块,你已经写了很多类,某个时候需求改变了,你需要做的更多,怎么办,很多时候我们会直接修改代码加一些我们想要的功能,这样好吗?或许也没什么关系,对于自己的代码很熟悉,我认为在这儿加上要实现的代码就可以完成任务,其实这本没什么错误,大部分的程序员都会这么写。从最基本的方面考虑,大家都是这么写,我能不能标新立异,我能不能想种更高级的方式,以前写的类都不变,我增加一些类就可以完成这些任务,答案是肯定的,你可以用装饰者模式重构你的代码。没错,重构,我其实想说从写,都一样,你可以用装饰者模式来完成任务,当以后你需要做的更多的时候,你或许要写一个新的装饰者类,或者你什么都不用写就可以很方便的实现新的需求,?_?
2.装饰者模式的样子
下图:
在装饰者模式中,从大的方向中,我们首先要从我们的需求分析出发,我们要实现什么东西,我们能不能把他们抽象成对象的形式,这些都是你要考虑的,你只有考虑好了这些东西你才可以去编码,我建议你先画一下类图,虽然很多人不习惯画,或者是根本就不会画,也没关系,你可以开始代码了。
我们要定义一个接口,他是我们具体类和装饰类的接口,这样就可以拉近具体类(要被修饰的类)和修饰类的关系,让他们看起来是那么的像,其实你也没必要知道这个接口指的是具体类还是装饰类,你只要知道你可以用装饰类来装饰具体类就ok了。在装饰类的实现中我们都有一个具体类的属性,呵呵,这下应该清楚了把。就这么容易,把具体类导入装饰类,让装饰类来修饰,得到你需要的东西。
3.装饰者的好处
装饰者设计模式就是对修改关闭对扩展开发,其实他或者没你想的那么牛逼,不要你也能完成任务,但是你用是不是让你和别人讲代码的时候能唬住别人呢?呵呵,有时让自己开来牛点就这么简单