Java中的代理模式實例
阿新 • • 發佈:2017-12-18
mage bytes return gen font bject oid turn 需要
優點:解耦和,降低了不同類之間的依賴性
孩子由於太小,不能自己吃奶需要保姆來餵,衣服臟了也不能自己洗,通過代理實現。
1 package object.agency; 2 3 //吃飯代理 4 public interface EatAgency { 5 void canHelpEat(); 6 }
1 package object.agency; 2 3 //洗衣服代理 4 public interface ClothAgency { 5 6 void canWashCloth(); 7 }
1 package object.agency; 2 3//baby找代理幫助他完成要做的事 4 public class Baby { 5 public EatAgency getEat() { 6 return eat; 7 } 8 public void setEat(EatAgency eat) { 9 this.eat = eat; 10 } 11 public ClothAgency getWash() { 12 return wash; 13 } 14 public void setWash(ClothAgency wash) {15 this.wash = wash; 16 } 17 private EatAgency eat; 18 private ClothAgency wash; 19 20 void eat(){ 21 //需要找代理餵飯 22 eat.canHelpEat(); 23 } 24 void wash(){ 25 //需要找代理洗衣服 26 wash.canWashCloth(); 27 } 28 }
1 package object.agency; 2//Lucy可以幫孩子吃飯稱為吃飯的代理 3 public class Lucy implements EatAgency{ 4 5 @Override 6 public void canHelpEat() { 7 // TODO Auto-generated method stub 8 System.out.println("lucy可以帶孩子吃奶"); 9 } 10 11 }
1 package object.agency; 2 //Mary可以幫孩子洗衣服成為洗衣服的代理 3 public class Mary implements ClothAgency{ 4 5 @Override 6 public void canWashCloth() { 7 // TODO Auto-generated method stub 8 System.out.println("Mary可以幫孩子洗衣服"); 9 } 10 11 }
1 package object.agency; 2 3 //baby最終找到代理的測試 4 public class BabyTest { 5 public static void main(String[] args) { 6 Baby baby=new Baby(); 7 Lucy lucy=new Lucy(); 8 Mary mary=new Mary(); 9 baby.setEat(lucy); 10 baby.setWash(mary); 11 baby.eat(); 12 baby.wash(); 13 } 14 }
test:
Java中的代理模式實例