Java 設計模式之適配器模式詳解

定義

適配器將一個類的接口,轉換成客戶期望另一個接口。適配器讓原本不兼容的類可以合作無間

結構圖

在這裡插入圖片描述

如圖所示,兩腳插頭如何能插入三腳插座,可以在中間加一個適配器進行轉換,就能實現兩腳插頭能插入三腳插座。

使用場景

  • 新的代碼兼容舊的代碼
  • 使用別人好的代碼到自己的代碼中

代碼實現

適配器模式有:對象適配器和類適配器

Java代碼實現

java沒有多繼承,隻能實現對象適配器
先創建兩個接口

// 適配目標接口
public interface Target{
	public void aaa();
}
// 適配者接口
public interface Adaptee{
	public void bbb();
}

實現這兩個接口

public class Targetimpl implements Target{
	public void aaa(){
		System.out.printnln("Target")
	}
}
public class Adapteeimpl implements Adaptee{
	public void bbb(){
		System.out.printnln("Adaptee")
	}
}

制作適配器
需要實現要適配成什麼接口,需要實現什麼接口

public class Adapter implements Target{
	Adaptee adaptee;
	public Adapter(Adaptee adapter){
		this.adaptee = adaptee;
	}
	public void aaa(){
		adaptee.bbb()
	}
}
public class Run{
	public static void main(String[] args){
		Adaptee adaptee = new Adatee();
		Target target = new Targetimpl();
		Target adapter = new Adapter(target);
		adaptee.aaa();
		target.bbb();
		adapter.aaa();
	}
}

運行結果:

Target
Adaptee
Adaptee

Python代碼實現

Python可以實現對象適配器和類適配器

這是對象適配器

# 適配目標
class Target(object):
    def aaa(self):
        print("Target")
# 被適配者
class Adaptee(object):
    def bbb(self):
        print("Adaptee")

# 這是適配器
class Adapter(Target):
    def __init__(self, Adaptee):
        self.Adaptee = Adaptee
        
    def aaa(self):
        self.Adaptee.bbb()

target = Target()
adaptee = Adaptee()
adapter = Adapter(adaptee)
target.aaa()
adaptee.bbb()
adapter.aaa()

運行結果:

Target
Adaptee
Adaptee

這是類適配器

class Target(object):
    def aaa(self):
        print("Target")

class Adaptee(object):
    def bbb(self):
        print("Adaptee")

class Adapter(Target, Adaptee):
    def aaa(self):
        self.bbb()

target = Target()
adaptee = Adaptee()
adapter = Adapter()
target.aaa()
adaptee.bbb()
adapter.aaa()

運行結果:

Target
Adaptee
Adaptee

到此這篇關於Java 設計模式之適配器模式詳解的文章就介紹到這瞭,更多相關Java 設計模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: