【济南校区】装饰者模式2
上一次我们简单的和大家聊了聊装饰者模式,相信大家对装饰者模式有了一个简单的认识,个人对他的理解就是优化了继承的模式,使之不止局限于继承,更能更好的去扩展它本身的一个功能。 像上一次我们举例的代码那样,如果只有一个ConcreteComponent类而没有抽象的Component类,那么Decorator类可以使ConcreteComponent的一个字类。同样的,如果只有一个ConcreteDecorator类,那么就没有必要建立一个单独的Decorator类,而可以把Decorator和ConcreteDecorator的责任合并成一个类。 因此,我们就可以对上一次的代码进行一个优化处理,我们就没有必要有Component类了,我们可以直接让Decorator继承ConcreteComponent即可,具体代码如下: /** * 实现类 */ public class ConcreteComponent { public ConcreteComponent(){ } private String name; public ConcreteComponent(String name){ this.name = name; } public void show(){ System.out.print("输出为0"); } } class Decorator extends ConcreteComponent{ protected ConcreteComponent con; public void play(ConcreteComponent con){ this.con = con; } @Override public void show() { if(con != null){ con.show(); } } } /** * 根据不同的需求具体的实现类 */ class ConcreteDecorator extends Decorator{ @Override public void show() { System.out.print("输出当前方法"); super.show(); } } 这样是不是显得代码更加简洁,好了,装饰者模式我们就讲到这里了,大家对它优点可以总结一下,我给大家总结一下他的一些优势。 1. 把类中装饰功能从类中搬移出去,这样就可以简化原有类。 2. 有效的把类的核心职责和装饰功能区分开了,而且可以去除相关类中的重复装饰逻辑。
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
黑马程序员济南中心联系电话:0531-55696830
|