hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

设想形式之简朴明白装潢器形式与应用

2019-11-18杂谈搜奇网51°c
A+ A-

1.什么是装潢器形式

​ 装潢器形式(Decorator Pattern)许可向一个现有的对象增添新的功用,同时又不转变其构造。这类范例的设想形式属于构外型形式,它是作为现有的类的一个包装。

​ 这类形式创建了一个装潢类,用来包装原有的类,并在坚持类要领署名完整性的前提下,供应了分外的功用。

2、装潢器形式的主要构成部分

①装潢器形式特性:

(1) 装潢对象和实在对象有雷同的接口。如许客户端对象就能以和实在对象雷同的体式格局和装潢对象交互。

(2) 装潢对象包括一个实在对象的援用(reference)

(3) 装潢对象接收一切来自客户端的要求。它把这些要求转发给实在的对象。

(4) 装潢对象能够在转发这些要求之前或今后增添一些附加功用。如许就确保了在运行时,不必修正给定对象的构造就能够在外部增添附加的功用。在面向对象的设想中,通常是经由过程继续来完成对给定类的功用扩大。

②装潢器形式由组件和装潢者构成:
  • 笼统组件(Component):须要装潢的笼统对象。
  • 详细组件(ConcreteComponent):是我们须要装潢的对象。
  • 笼统装潢类(Decorator):内含指向笼统组件的援用及装潢者共有的要领。
  • 详细装潢类(ConcreteDecorator):被装潢的对象。

3.装潢器形式的详细完成

生活中的装潢器小例子:

​ 公路上的汽车络绎不绝,我们的生活老是忙碌不断。终究有了一个假期.我们开着汽车出去玩,然则正如世界上没有一样本身的一样,总想找点不一样的觉得。因而我们买了油漆,照着图案给车来个帅气的赛车纹理,终究异乎寻常了,我们开车去玩吧!

package jiagouxiancheng.month_11.day1103.zhuangshiqi;


interface Car {
    void run();
}


class BMWCar implements Car {
    @Override
    public void run() {
        System.out.println("宝马开动...");
    }
}

class BenzCar implements Car {
    @Override
    public void run() {
        System.out.println("奔驰开动...");
    }
}

/**
 * 赛车油漆涂料
 */
class PaintDecorator implements Car {

    protected Car car;

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

    @Override
    public void run() {
        car.run();
    }

}

class CoolPanintDecorator extends PaintDecorator {

    public CoolPanintDecorator(Car car) {
        super(car);
    }

    @Override
    public void run() {
        cooolPanint();
        car.run();
    }

    private void cooolPanint() {
        System.out.print("刷上帅气的赛车图案的油漆->");
    }


}

/**
 * 给车来个酷酷的外型
 */
public class DriveCar {

    public static void main(String[] args) {

        System.out.println("公路上的车络绎不绝...");
        Car bmwCar = new BMWCar();
        Car benzCar = new BenzCar();
        bmwCar.run();
        benzCar.run();
        System.out.println("此次我们先给车来个酷酷的外型!");
        Car car = new CoolPanintDecorator(benzCar);
        car.run();

    }
}
输出效果:
公路上的车络绎不绝...
宝马开动...
奔驰开动...
此次我们先给车来个酷酷的外型!
刷上帅气的赛车图案的油漆->奔驰开动...
4.总结

①长处:装潢类和被装潢类能够自力生长,不会互相耦合,装潢形式是继续的一个替换形式,装潢形式能够动态扩大一个完成类的功用。

②瑕玷:多层装潢比较复杂。

③运用场景:1、扩大一个类的功用。 2、动态增添功用,动态打消。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
设想形式之简朴明白装潢器形式与应用

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282167.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>