Android设计模式-装饰模式

本文介绍了一种设计模式——装饰者模式,它允许在不改变现有对象的情况下为其添加新的功能。通过具体的Java代码示例,展示了如何使用装饰者模式来动态地为一个对象添加职责,并解释了这种模式相较于传统继承的优势。

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

1、定义

动态给的一个对象添加额外的职责或者功能。比生成子类更为灵活。

2、适用场景

动态的扩展类的功能

3、UML图

这里写图片描述

4、简单的实现

1、定义Person抽象类,需要穿衣服的抽象方法

public abstract class Person  {
   public  abstract void dressed();
}

2、Person实现

public class PersonClothWrapper extends Person {
    protected  Person person;

    public PersonClothWrapper(Person person) {
        this.person = person;
    }

    @Override
    public void dressed() {
        System.out.println("wear simple cloth");
    }
}

3、真正穿衣服的Boy继承Person

public class Boy extends Person {
    @Override
    public void dressed() {
        System.out.println("wear cloth");
    }
}

4、装饰者:对穿衣服进行装饰

public class ExpensiveWrapper extends PersonClothWrapper {
    public ExpensiveWrapper(Person person) {
        super(person);
    }

    @Override
    public void dressed() {
        super.dressed();
        dressedShirt();
        dressedLeather();
        dressedJean();
    }
    private void dressedShirt(){
        System.out.println("wear shirt");
    }
    private void dressedLeather(){
        System.out.println("wear shirt");
    }
    private void dressedJean(){
        System.out.println("wear shirt");
    }
}

5、测试类:

public class TestWrapper {
    public static void main(String args[]){
        Person person=new Boy();
        ExpensiveWrapper expensiveWrapper=new ExpensiveWrapper(person);
        expensiveWrapper.dressed();
    }
}

运行结果:

wear simple cloth
wear shirt
wear leather
wear jean

Ref 《Android源码设计模式解析与实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值