抽象工廠設計模式
阿新 • • 發佈:2020-08-06
1.說明
前面介紹的工廠方法模式中考慮的是一類產品的生產,如畜牧場只養動物、電視機廠只生產電視機、計算機軟體學院只培養計算機軟體專業的學生等。
同種類稱為同等級,也就是說:工廠方法模式只考慮生產同等級的產品,但是在現實生活中許多工廠是綜合型的工廠,能生產多等級(種類) 的產品,如農場裡既養動物又種植物,電器廠既生產電視機又生產洗衣機或空調,大學既有軟體專業又有生物專業等。
2.特點
模式的結構與實現
抽象工廠模式同工廠方法模式一樣,也是由抽象工廠、具體工廠、抽象產品和具體產品等 4 個要素構成,但抽象工廠中方法個數不同,抽象產品的個數也不同。現在我們來分析其基本結構和實現方法。
1. 模式的結構
抽象工廠模式的主要角色如下。
- 抽象工廠(Abstract Factory):提供了建立產品的介面,它包含多個建立產品的方法 newProduct(),可以建立多個不同等級的產品。
- 具體工廠(Concrete Factory):主要是實現抽象工廠中的多個抽象方法,完成具體產品的建立。
- 抽象產品(Product):定義了產品的規範,描述了產品的主要特性和功能,抽象工廠模式有多個抽象產品。
- 具體產品(ConcreteProduct):實現了抽象產品角色所定義的介面,由具體工廠來建立,它 同具體工廠之間是多對一的關係。
3.結構圖
4.程式
package com.jun.design.create; /** * 抽象工廠設計模式 */ public class AbstractFactory { public void main(String[] args) { LowComputer lowComputer = new LowComputer(); lowComputer.createRam(); lowComputer.createSys(); } //定義抽象工廠 public interface Factory { public Ram createRam(); public WinSystem createSys(); } //具體工廠實現 低端電腦配置 public class LowComputer implements Factory { @Override public Ram createRam() { return new Ram512(); } @Override public WinSystem createSys() { return new SystemWin7(); } } //具體工廠實現 高階電腦配置 public class NiceComputer implements Factory { @Override public Ram createRam() { return new Ram1G(); } @Override public WinSystem createSys() { return new SystemWin7(); } } //記憶體條介面 public interface Ram {} //512記憶體條實現類 public class Ram1G implements Ram { public Ram1G() { System.out.println("1G記憶體"); } } //1G記憶體條實現類 public class Ram512 implements Ram { public Ram512(){ System.out.println("512記憶體"); } } //系統介面 public interface WinSystem {} //win7系統實現類 public class SystemWin7 implements WinSystem { public SystemWin7() { System.out.println("win7"); } } }