23种设计模式

23种设计模式

装饰者模式
概述

在不改变原有对象的情况下,对其进行增强,装饰者模式有以下几个角色

1,抽象被装饰者

2,具体的被装饰者,实现抽象被装饰者,

3,抽象装饰者,实现抽象被装饰者

4,具体的装饰者,继承抽象装饰者

案例说明
场景:

​ 假如商城有台电脑(Computer),买回来原装的(OriginalComputer),用鲁大师测试了下跑分17万分

感觉不太够用,这时候我想对电脑进行增强,加装固态硬盘SSD(DecorateSSD)和加内存RAM(DecorateRAM)

下面是案例的UML类图,

1,抽象被装饰者:Computer

2,具体的被装饰者:OriginalComputer

3,抽象装饰者:Decorate

4,具体的装饰者:DecorateSSD和DecorateRAM

在这里插入图片描述

代码

1,抽象被装饰者:Computer

public interface Computer {
    int originScore=170000;

    int score();

    int add(int count);
}

2,具体被装饰者:OriginalComputer

public class OriginalComputer implements Computer{
    @Override
    public int score() {
        return originScore;
    }

    @Override
    public int add(int count) {
        return 0;
    }
}

3,抽象装饰者:Decorate

public class Decorate implements Computer{
    private Computer computer;

    public Decorate(Computer computer) {
        this.computer = computer;
    }

    @Override
    public int score() {
      return computer.score();
    }

    @Override
    public int add(int count){
        int originScore = this.score();
        int newScore = originScore + count;
        return newScore;
    }
}

4,具体的装饰者1:DecorateSSD

public class DecorateRAM extends Decorate {

    public DecorateRAM(Computer computer) {
        super(computer);
    }
}

具体的装饰者2:DecorateRAM

public class DecorateSSD extends Decorate{
    private Computer computer;

    public DecorateSSD(Computer computer) {
        super(computer);
    }
}

5,测试电脑跑分

public class TestComputerScore {
    public static void main(String[] args) {
        Computer computer = new OriginalComputer();
        int score = computer.score();
        System.out.printf("------原装电脑跑分为:%d分------\n", score);
        Computer decorate1 = new DecorateRAM(computer);
        int newScore1 = decorate1.add(40000);
        System.out.printf("------加装RAM内存条跑分为:%d分------\n", newScore1);
        Computer decorate2 = new DecorateSSD(computer);
        int newScore2 =decorate2.add(50000);
        System.out.printf("------加装SSD固态硬盘跑分为:%d分------\n", newScore2);
    }
}

输出

------原装电脑跑分为:170000分------
------加装RAM内存条跑分为:210000分------
------加装SSD固态硬盘跑分为:220000分------
总结:

主要有四个角色,理解四个角色以及UML类图,然后结合实际场景如我想对原装电脑进行加强,通过加RAM和SSD方式进行升级,把现实中的对象转化成UML类图中的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值