概念性的东西就不说了,毕竟自己理解还不够透彻,所以前面一段直接删了。
简单的设计图:
代码的实现:
package bridge; public abstract class Clothing { /** * 抽象方法 * @param person */ public abstract void dressCloth(Person person); }
package bridge; public class Jacket extends Clothing { @Override public void dressCloth(Person person) { // TODO Auto-generated method stub System.out.println(person.getType() + "穿上马甲!"); } }
package bridge; public class Trouser extends Clothing { @Override public void dressCloth(Person person) { // TODO Auto-generated method stub System.out.println(person.getType() + "穿上裤子!"); } }
package bridge; public abstract class Person { private String type; private Clothing clothing; public String getType() { return type; } public void setType(String type) { this.type = type; } public Clothing getClothing() { return clothing; } public void setClothing(Clothing clothing) { this.clothing = clothing; } //抽象方法 public abstract void dress(); }
package bridge; public class Man extends Person { public Man() { setType("男人"); } @Override public void dress() { getClothing().dressCloth(this); } }
package bridge; public class Woman extends Person { public Woman() { setType("女人"); } @Override public void dress() { getClothing().dressCloth(this); } }
package bridge; public class ClientTest { /** * @param args */ public static void main(String[] args) { //两类人 Person man = new Man(); Person lady = new Woman(); //两种衣服的类 Clothing jacket = new Jacket(); Clothing trouser = new Trouser(); jacket.dressCloth(man); trouser.dressCloth(man); jacket.dressCloth(lady); trouser.dressCloth(lady); } }