Android设计模式:装饰设计模式

2018-09-26  本文已影响0人  kjy_112233

(1)装饰设计模式

public interface Person {
    String combination();
}
public class PersonZ implements Person {
    @Override
    public String combination() {
        return "小张";
    }
}

public class PersonL implements Person {
    @Override
    public String combination() {
        return "小李";
    }
}

public class PersonW implements Person {
    @Override
    public String combination() {
        return "小王";
    }
}
public abstract class PersonDecorator implements Person {
    private Person person;

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

    @Override
    public String combination() {
        return person.combination();
    }
}

具体的装饰者

public class RedPants extends PersonDecorator {
    public RedPants(Person person) {
        super(person);
    }

    @Override
    public String combination() {
        return super.combination() + show();
    }

    private String show(){
        return "红色上衣";
    }
}

public class WhitePants extends PersonDecorator {
    public WhitePants(Person person) {
        super(person);
    }

    @Override
    public String combination() {
        return super.combination() + show();
    }

    private String show(){
        return "白色上衣";
    }
}

public class RedJacket extends PersonDecorator {
    public RedJacket(Person person) {
        super(person);
    }

    @Override
    public String combination() {
        return super.combination() + show();
    }

    private String show() {
        return "红色裤子";
    }
}

public class WhiteJacket extends PersonDecorator {
    public WhiteJacket(Person person) {
        super(person);
    }

    @Override
    public String combination() {
        return super.combination() + show();
    }

    private String show(){
        return "白色裤子";
    }
}

public class RedShoes extends PersonDecorator {
    public RedShoes(Person person) {
        super(person);
    }

    @Override
    public String combination() {
        return super.combination() + show();
    }

    private String show(){
        return "红色鞋子";
    }
}

public class WhiteShoes extends PersonDecorator {
    public WhiteShoes(Person person) {
        super(person);
    }

    @Override
    public String combination() {
        return super.combination() + show();
    }

    private String show() {
        return "白色鞋子";
    }
}
Person person = new PersonZ();
PersonDecorator redPants = new RedPants(person);
redPants.combination();
PersonDecorator whiteJacket = new WhiteJacket(person);
whiteJacket.combination();
PersonDecorator whiteShoes = new WhiteShoes(person);
whiteShoes.combination();

优点

缺点

上一篇下一篇

猜你喜欢

热点阅读