设计模式Decorator Pattern

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinaihalo/article/details/82692333

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

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

猜你喜欢

转载自blog.csdn.net/sinaihalo/article/details/82692333