设计模式Decorator Pattern

装饰器模式:避免子类膨胀,是继承的一个替代模式,动态扩展一个实现类的功能。比如,人、衣服:被装饰类和装饰类,随意搭配
java中应用:

例如:BufferedReader in = new BufferedReader(new FileReader(“in.txt”));
继承结构
这里写图片描述

demo

继承结构
这里写图片描述

package decorater;

public interface Person {
    public void getDress();
}
package decorater;

public class BlackPerson implements Person{

    @Override
    public void getDress() {
        System.out.println("I am black");

    }

}
package decorater;

public class WhitePerson implements Person {

    @Override
    public void getDress() {
        System.out.println("I am write");

    }

}
package decorater;

public abstract class DecoratorPerson implements Person{

    public Person person;
    public DecoratorPerson(Person dperson) {
        this.person = dperson;
    }
    public void getDress(){
        person.getDress();
    }
}
package decorater;

public class TshirtPerson extends DecoratorPerson {
    public TshirtPerson(Person dperson) {
        super(dperson);
    }
    @Override
    public void getDress() {
        person.getDress();
        setDress(person);


    }
     void setDress(Person person) {
         System.out.println("I am in Tshirt");
    }

}
package decorater;

public class DecoratTest {

    public static void main(String[] args) {
        Person p = new WhitePerson();
        Person dp = new TshirtPerson(new BlackPerson());
        Person dp1 = new TshirtPerson(new WhitePerson());
        p.getDress();
        System.out.println("----------");
        dp.getDress();
        System.out.println("----------");
        dp1.getDress();

    }

}

控制台输出:

I am write
----------
I am black
I am in Tshirt
----------
I am write
I am in Tshirt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值