Java设计模式_结构型_装饰模式_是海军还是空军

来源:互联网 发布:linux dd bs count 编辑:程序博客网 时间:2024/05/22 06:13

转载请注明出处:http://blog.csdn.net/ljmingcom304/article/details/50455650
本文出自:【梁敬明的博客】

1.人类角色

  存在一个抽象的人类角色,每个人类角色根据所在的行业的不同,所扮演的职业角色也不同。

//抽象构建角色public interface Person {    void operation();}

2.士兵角色

  其中有一类士兵的角色,他们的职责就是保家卫国。

public class Soldier implements Person {    @Override    public void operation() {        System.out.println("保卫国家");    }}

3.装饰角色

  持有一个人类角色的实例,并定义了人类角色定义的接口。

public class Decorator implements Person {    private Person component;    public Decorator(Person component){        this.component = component;    }    @Override    public void operation() {        component.operation();    }}

4.空军海军

  给士兵装备军舰,这样的士兵我们通常称为海军。给士兵装备上飞机,这样的士兵我们通常称为空军。

public class Navy extends Decorator {    public Navy(Person component) {        super(component);    }    @Override    public void operation() {        System.out.print("在海上装备军舰");        super.operation();    }}public class Airforce extends Decorator {    public Airforce(Person component) {        super(component);    }    @Override    public void operation() {        System.out.print("在天空装备飞机");        super.operation();    }}

5.保卫国家

  一个普通的士兵,通过不同的装备,可以扮演不同的角色,海军在海上保卫国家,空军在天空保卫国家。

public class Client {    public static void main(String[] args) {        Soldier soldier = new Soldier();        Navy navy = new Navy(soldier);        navy.operation();        Airforce airforce = new Airforce(soldier);        airforce.operation();    }}
0 0