抽象部分,Abstraction,业务抽象角色(人)是一个事物的本身的特征,
public abstract class Person {
public Clothing clothing;
public String type;
public abstract void dress();
}
class Man extends Person {
public Man() {
this.type = "男人";
}
@Override
public void dress() {
if (clothing != null) clothing.personDressCloth(this);
}
}
class Lady extends Person {
public Lady() {
this.type = "女人";
}
@Override
public void dress() {
if (clothing != null) clothing.personDressCloth(this);
}
}
实现部分,Implementor,业务实现角色(穿衣服)是一个事物(人)可以做的动作,在程序运行时刻,实现部分可以选择或者切换
public abstract class Clothing {
public abstract void personDressCloth(Person person);//人穿衣服
}
class Trouser extends Clothing {
@Override
public void personDressCloth(Person person) {
if (person != null) System.out.println(person.type + "穿裤子");
}
}
class Jacket extends Clothing {
@Override
public void personDressCloth(Person person) {
if (person != null) System.out.println(person.type + "穿马甲");
}
}
public class Test {
public static void main(String[] args) {
Person man = new Man();
Person lady = new Lady();
Clothing jacket = new Jacket();
Clothing trouser = new Trouser();
jacket.personDressCloth(man);
trouser.personDressCloth(man);
System.out.println("\n");
jacket.personDressCloth(lady);
trouser.personDressCloth(lady);
}
}