概念理解:装饰者模式(Decorator),就是装饰一下某种东西,使得他比原来增加些东西,比如化妆,原来单眼皮,给贴上个假双(这里也许不太贴切哈,莫怪),就具备了双眼皮效果。回到java上来说,就是给某个类的功能进行加强,扩展了其功能而已。
模式由来:我们要对一个类进行增强,因为不推荐直接修改源代码,才产生了装饰者模式。
原理:有一个类实现了A接口,我们要加强这个类,所以写了一个新类也实现这个接口并把原类的接口的引用添加到新类,在新类中重写要加强的方法并在方法中调用要这个加强的方法,从而实现增强。
例子:一只狗只会跑,我想让它跑完了就飞起来!(在“跑”这个方法上加入“飞”的附加业务)
interface Animal{
public void run();
}
class Dog implements Animal{
@override
public void run(){
System.out.println("狗在跑");
}
}
//被装饰者
class FlyDog implements Animal{
//原类的接口的引用
Animal animal = null;
//构造方法
public FlyDog(Animal animal){
this.animal = animal;
}
//重写要加强的方法
@override
public void run(){
animal.run();//原来的功能
System.out.println("它越来越快,最后它飞了起来");
}
}
此时,如果您new的是Dog,那么它只会跑。如果您new的是FlyDog,那么,它跑完后要飞起来!我们成功的在“跑”上加入了“飞”。
时间: 2024-10-26 04:35:39