Decorator装饰器模式

本文介绍了一种结构型设计模式——装饰器模式,并通过一个具体的英雄角色装饰实例详细展示了该模式的应用方式。装饰器模式允许在不修改原始类的基础上,通过组合的方式为对象添加新的职责。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰器模式是一种结构型模式。

举个例子,比如说我们现在有一些没有皮肤的英雄,我们可以给这些英雄加点服饰,比如说戴个帽子,穿双鞋子等

简单来讲就是采用聚合方式,装饰器中聚合Hero,执行hero的方法的同时进行添加所需的装饰。

示例代码:

public abstract class Hero {
    public abstract void showSkin();
}




public abstract class HeroDecorator extends Hero {
    public Hero hero;

    public HeroDecorator(Hero hero) {
        this.hero = hero;
    }
}




public class HatDecorator extends HeroDecorator {

    public HatDecorator(Hero hero) {
        super(hero);
    }

    @Override
    public void showSkin() {
        super.hero.showSkin();
        System.out.println("戴帽子");
    }
}




public class ShoesDecorator extends HeroDecorator {
    public ShoesDecorator(Hero hero) {
        super(hero);
    }

    @Override
    public void showSkin() {
        super.hero.showSkin();
        System.out.println("穿鞋子");
    }
}



public class FuWang extends Hero {
    @Override
    public void showSkin() {
        System.out.println("展示斧王装饰");
    }
}




public class Main {

    public static void main(String[] args) {
        FuWang fw = new FuWang();
        HatDecorator hatDecorator = new HatDecorator(fw);
        ShoesDecorator sd = new ShoesDecorator(hatDecorator);
        sd.showSkin();
    }
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值