码迷,mamicode.com
首页 > 编程语言 > 详细

java 设计模式 之 装饰器模式

时间:2019-07-18 13:43:25      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:pre   抽象类   system   http   装饰器   stat   技术   span   核心   

  • 装饰器模式的作用

    在不修改原先对象核心的功能的情况下,对功能进行增强。

  • 增强对象的功能的途径
  1. 通过类继承的方式,对父对象进行增强操作,例如造车是父类,改装跑车,跑车加大灯,改装房车,房车加私人电影院。如图: 通过这种方式做的装饰类会因为业务的复杂性激增

    技术图片

   2.通过装饰模式,将方法增强。如图

技术图片

  • 装饰模式架构

  car :被装饰的抽象类

  

package javadesign.decorate;

/**
 * 抽象小汽车
 */
public  interface Car {

    public    void buildCar();

}

benCar:被装饰的实现

package javadesign.decorate;

public class BenCar implements Car {


    @Override
    public void buildCar() {
        System.out.println("建造一辆车");
    }
}

Decorator:装饰的类

package javadesign.decorate;

public class Decorator implements Car {

    public Car car;

    public Decorator(Car car){
        this.car=car;
    }


    @Override
    public void buildCar() {
        this.car.buildCar();
    }
}
StrongDecorator:装饰的实现
package javadesign.decorate;

public class Decorator implements Car {

    public Car car;

    public Decorator(Car car){
        this.car=car;
    }


    @Override
    public void buildCar() {
        this.car.buildCar();
    }
}

Client:测试类

package javadesign.decorate;

public class Client {

    public static void main(String[] args) {
        Car car=new BenCar();
        Decorator decorator=new StrongDecorator(car);
        ((StrongDecorator) decorator).buildSportsCar();
        ((StrongDecorator) decorator).buildHouseCar();
    }
}

测试结果:技术图片

 

总结:装饰模式在不改变原先核心功能的情况下,可以实现增强,并且不会产生很多继承类,按照业务模块划分,通过不同的方法进行装饰。

 

java 设计模式 之 装饰器模式

标签:pre   抽象类   system   http   装饰器   stat   技术   span   核心   

原文地址:https://www.cnblogs.com/blogxiao/p/11206509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!