目的:原接口的參數等不滿足現有條件,或者完全不同,同時不想改變原接口。
優點: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. }