1. 程式人生 > >Java中的代理模式實例

Java中的代理模式實例

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中的代理模式實例