栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【设计模式】装饰(Deractor)模式实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【设计模式】装饰(Deractor)模式实例

系列文章目录

第五章设计模式(下)


目录

系列文章目录

前言

一、装饰(Decorator)模式是什么?

二、装饰(Decorator)模式的优缺点

三、装饰(Decorator)模式的结构

四、实例演示

1.实例概述

2.代码演示

3.实验结果

总结


前言

        设计模式,又称为软件设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

        学习设计模式可以提高程序员的思维能力、编程能力和设计能力,使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。

一、装饰(Decorator)模式是什么?

        在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。

二、装饰(Decorator)模式的优缺点

        优点:

    1)采用装饰模式扩展对象的功能比采用继承方式更加灵活;

    2)可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。

        缺点:

    1)装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。

三、装饰(Decorator)模式的结构

           装饰模式主要包含以下角色:

   1)抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。

   2)具体构件(Concrete Component)角色:实现抽象构件,通过装饰角色为其添加一些职责。

   3)抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。

   4)具体装饰(Concrete Decorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。

四、实例演示

1.实例概述

抽象构件角色:Gender抽象类

具体构件角色:Man类或Woman类

抽象装饰角色:Deractor抽象类,依赖于Gender类,是为了后面对gender的继承类进行操作

具体装饰角色:T_shirts类,Jacket类,Jeen类···(这里可以自己去扩写很多类)

2.代码演示

代码如下(示例):

package Decorate;

public class ClothDerector {

    public static void main(String[] args) {
        // 生成了一个人
        Man man = new Man();
        // 选择牛仔上衣
        derector jacket = new Jacket(man);
        jacket.dress();
        // 选择牛仔裤
        Jeen jeen = new Jeen(jacket);
        jeen.dress();
    }

}

//抽象构件
abstract class Gender {
    public abstract void dress();
}

//具体构件
class Man extends Gender{

    public void dress() {
        System.out.println("一个男人");
    }
}

class Woman extends Gender{

    public void dress() {
        System.out.println("一个女人");
    }

}

//抽象装饰
abstract class derector extends Gender {
    
    Gender gender;
    public derector(Gender gender) {
        this.gender = gender;
    }

}

//具体装饰
class T_shirts extends derector {
    public T_shirts(Gender gender) {
        super(gender);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void dress() {
        // TODO Auto-generated method stub
        System.out.println("T_shirts");

    }
}

class Jacket extends derector {
    public Jacket(Gender gender) {
        super(gender);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void dress() {
        // TODO Auto-generated method stub
        System.out.println("Jacket");

    }
}

class Jeen extends derector {
    public Jeen(Gender gender) {
        super(gender);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void dress() {
        // TODO Auto-generated method stub
        System.out.println("Jeen");
    }
}

3.实验结果

Jacket
Jeen


总结

        以上就是今天要讲的内容,本文仅仅简单介绍了结构模式下装饰模式的定义,优缺点以及其的模式结构,并通过实例演示,进一步反应了在一定需求条件下,装饰模式的优点。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号