java23種設計模式(二)抽象工廠模式

我們接著上一章的工廠方法模式繼續學習一下抽象工廠模式。

抽象工廠模式:在工廠模式中,如果有多個產品,則就是抽象工廠模式。

例子:有一個工廠開了兩個子公司,專門用來生產電腦配件鍵盤和鼠標,一個是聯想工廠則生產聯想的產品,另一個是宏碁工廠則生產宏碁的產品。

代碼如下:

1、工廠接口(可以生產鼠標和鍵盤)

public interface Factory {
// 生產鼠標
Mouse createMouse();
// 生產鍵盤
KeyBoard createKeyBoard();
}

2、聯想工廠(生產聯想鼠標和鍵盤)

public class LenovoFactory implements Factory {
@Override
public Mouse createMouse() {
return new LenovoMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new LenovoKeyBoard();
}
}

3、宏碁工廠(生產宏碁鼠標和鍵盤)

public class AcerFactory implements Factory {
@Override
public Mouse createMouse() {
return new AcerMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new AcerKeyBoard();
}
}

4、鍵盤接口

public interface KeyBoard {
void getName();
}

5、聯想鍵盤實現類

public class LenovoKeyBoard implements KeyBoard {
@Override
public void getName() {
System.out.println("這個是聯想鍵盤");
}
}

6、宏碁鍵盤實現類

public class AcerKeyBoard implements KeyBoard {
@Override
public void getName() {
System.out.println("這個是宏碁鍵盤");
}
}

7、鼠標接口

public interface Mouse {
void getName();
}

8、聯想鼠標接口

public class LenovoMouse implements Mouse {
@Override
public void getName() {
System.out.println("這個是聯想鼠標");
}
}

9、宏碁鼠標接口

public class AcerMouse implements Mouse {
@Override
public void getName() {
System.out.println("這個是宏碁鼠標");
}
}

10、客戶端(可以在聯想工廠買聯想鼠標和鍵盤,也可以在宏碁工廠買宏碁生產的鼠標和鍵盤)

@SpringBootTest
class FactoryApplicationTests {
@Test
void abstractF(){
LenovoFactory lenovoFactory = new LenovoFactory();
lenovoFactory.createKeyBoard().getName();
lenovoFactory.createMouse().getName();
AcerFactory acerFactory = new AcerFactory();
acerFactory.createKeyBoard().getName();
acerFactory.createMouse().getName();
}
}

總結:

(1)增加xx工廠:創建xx工廠,繼承工廠接口,然後創建xx鼠標繼承鼠標接口,創建xx鍵盤繼承鍵盤接口即可。

(2)增加音響產品:首先創建音響接口,然後分別創建聯想音響和宏碁音響實現類實現音響接口。然後再工廠接口中增加創建音響的方法,在聯想工廠和宏碁工廠分別實現自家音響的創建。

如果文章對您有幫助,請記得點贊關注喲~

歡迎大家關注我的公眾號 情繫IT,每日推送技術文章供大家學習參考。


分享到:


相關文章: