与比较适配器模式
经过上次的适配器模式学习(没有学习那就赶快学习去!
链接:https://blog.csdn.net/FYM1211/article/details/105179281),三类适配器实现的方式,适配器模式就是,用一个类去实现一个接口的众多方法中的一个,如果有新的需求,可以在原来接口定义新的方法后,或者再定义一个新的接口定义这新的方法名。
总的来说,就是每个类很好的去实现一个接口的方法(这样后期处理以及分离起来会好很多)。
但是装饰模式就不同了,有点像适配器里面的对象适配器,(但是不要忘记了,对象适配器是原来的对象的方法不可以满足现有的需求,选择了新创建一个子类来用另一个方法实现这个新的需求 ),装饰模式就是原来的需求我一个类方法实现了,但是一个新的需求导致这个类方法不够准确,但是大体上还是可以接受,(比如要接受两种参数String 和int,原来的接受int参数的方法就不可用了)我想“装饰装饰”原来的方法,是不是我们相当于重载了一下这个原来的方法。
这么说 ,是不是有点明白了。
还有点模糊?
那就看看实例。
装饰模式
下面是 内联代码片
。
// An highlighted block
var foo = 'bar';
下面是 接口(定义了一个方法)
。
public interface docerate
{
public void idea();
}
下面是 原始的类方法
。
public class orginal_decorate implements docerate
{
@Override
public void idea()
{
System.out.println("我就是个原始方法");
}
}
下面是 新的装饰类方法
。
public class after_decorate implements docerate
{
orginal_decorate od;
after_decorate(orginal_decorate od)
{
super();
this.od=od;
}
@Override
public void idea()
{
System.out.println("我是装饰后的方法");
}
}
下面是 测试类
。
public class decorate_test
{
decorate_test(){
}
public static void main(String ager[])
{
orginal_decorate od=new orginal_decorate();
od.idea();
after_decorate ad=new after_decorate(od);
ad.idea();
}
}
做完这些是不是,感觉明白多了,就是这么简单。
当然真正实战的时候我觉得多种模式其实都要用上,比如适配器加上装饰类,你就可以拓展很多方法,同时这些方法还能很精准对吧,你总不是希望适配器的的一个类中重载十几种参数类型不同的方法吧,多瞎眼睛。