美文网首页爱编程,爱生活
Java设计模式<装饰器模式>

Java设计模式<装饰器模式>

作者: 熬夜的猫头鹰 | 来源:发表于2018-06-16 21:26 被阅读18次

Java设计模式<装饰器模式>

意图

  • 态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活

场景

  • 在不想增加很多子类的情况下扩展类

解决的问题

  • 一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀

实现方式

增加一个原有接口的实现类,并持有需要进行功能扩展的类,对实现的方法进行扩展

Demo

增加绿色小汽车,让其能够飞翔

定义小汽车能run

public interface CarService {

    public void run();
}

绿色小汽车实现CarService

public class GreenCar implements CarService{
    public void run() {
        System.out.println("i am a green car ,I can run");
    }
}


定义绿色小气车进行装饰

public class GreenCarDecorator implements CarService{

    private CarService CarService;

    public GreenCarDecorator(CarService carService){
        this.CarService = carService;

    }
    public void run() {
        CarService.run();
        fly();

    }

    private void fly(){
        System.out.println("i am green car ,i not only can run but also can fly now");
    }
}

测试类

public class DemoMain {

    public static void main(String[] args) {
        CarService carService = new GreenCarDecorator(new GreenCar());
        carService.run();
    }
}

输出


i am a green car ,I can run
i am green car ,i not only can run but also can fly now

相关文章

  • Java设计模式<装饰器模式>

    Java设计模式<装饰器模式> 意图 态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为...

  • Java设计模式之装饰器模式

    Java设计模式之装饰器模式 本文仅是个人观点,如有错误请指正 简介 装饰器模式(Decorator Patter...

  • 9、结构型模式-装饰器设计模式

    1、如虎添翼的设计模式-装饰器设计模式 简介:讲解-装饰器设计模式介绍和应用场景 装饰器设计模式(Decorato...

  • Java设计模式系列-装饰器模式

    原创文章,转载请标注出处:《Java设计模式系列-装饰器模式》 一、概述 装饰器模式作用是针对目标方法进行增强,提...

  • Java设计模式<迭代器模式>

    Java设计模式<迭代器模式> 意图 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示 ...

  • Java设计模式——装饰器模式

    Java设计模式之装饰器模式 回顾 上一次分享的组合模式相信大家已经理解其中的精髓,那么这次跟大家聊聊装饰器模式。...

  • 装饰者模式——IO流运用

    推荐博客Java设计模式学习09Java设计模式学习09Java设计模式学习09 装饰者模式还是比较难懂的。。。。...

  • Java设计模式<组合模式>

    Java设计模式<组合模式> 意图 对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和...

  • Java设计模式<模板模式>

    Java设计模式<模板模式> 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改...

  • Java设计模式<命令模式>

    Java设计模式<命令模式> 意图 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化 使用场景 ...

网友评论

    本文标题:Java设计模式<装饰器模式>

    本文链接:https://www.haomeiwen.com/subject/wmzbeftx.html