天天看點

擴充卡模式

目的:原接口的參數等不滿足現有條件,或者完全不同,同時不想改變原接口。

優點:1.可以讓任何兩個沒有關聯的類一起運作

           2。提高了類的複用,解決了現存類和複用環境要求不一緻的問題

缺點:增加了類的數量,增加了結構的複雜性。

類擴充卡:

擴充卡需要實作接口

類圖:

擴充卡模式

代碼:

新增的接口(想調用老接口)

1. interface Target
2. {
3. public void newMethod();
4. }      

原有的接口

1. public interface OldMethod{
2. 
3. void oldMethod();
4. }      

原有的接口實作

1. public class OldMethodImpl implements  OldMethod{
2. 
3.     @Override
4. public void oldMethodImpl() 
5.            {老方法,被調用");
6.     }
7. 
8. }      

擴充卡

1. public class Adapter extends OldMethodImpl implements NewMethod{
2. 
3. @Override
4.     public void newMethod() {
5.         oldMethodImpl();
6.     }
7. 
8. }      

調用

1. 
2. public class App {
3. 
4. public static void main(String[] args) {
5. 
6. Target target= new Adapter();
7.         target.newMethod();
8.     }
9. }      

采用組合方式

擴充卡模式

擴充卡類

1. class ObjectAdapter implements Target
2. {
3. private OldMethodImpl oldMethodImpl ;
4. public ObjectAdapter(OldMethodImpl oldMethodImpl)
5.     {
6. this.oldMethodImpl=oldMethodImpl;
7.     }
8. public void newMethod()
9.     {
10.         oldMethodImpl.oldMethodImpl();
11.     }
12. }      
1. public class ObjectAdapterTest
2. {
3. public static void main(String[] args)
4.     {
5. OldMethodImpl oldMethodImpl = new OldMethodImpl();
6. Target target = new ObjectAdapter(adaptee);
7.         target.newMethod();
8.     }
9. }      

繼續閱讀