Java設計模式學習-抽象工廠模式
阿新 • • 發佈:2018-12-26
抽象工廠模式
- 用來生產不同產品族的全部產品 。 (對於增加新的產品,無能為力,支援增加產品族)
- 抽象工廠模式是工廠方法模式的升級版本 , 在有多個業務品種 , 業務分類時 , 通過抽象工廠模式產生需要的物件是一種非常好的解決方式 。
1),建立發動機類介面,並建立它的倆個實現類如下
/**發動機介面 * @author 曉電腦 */ public interface Engline { void start(); } /** * 低端汽車發動機 */ class LowEngline implements Engline{ @Override public void start() { System.out.println("啟動慢"); } } /** * 高階汽車發動機 */ class HigEndEngline implements Engline { @Override public void start() { System.out.println("啟動快"); } }
2),建立輪胎類介面 ,並建立它的倆個實現類如下
/**輪胎介面 * @author 曉電腦 */ public interface Tyre { void abrasion(); } /** * 低配輪胎 */ class lowTyre implements Tyre{ @Override public void abrasion() { System.out.println("輪胎磨損快"); } } /** * 高配輪胎 */ class HighEndTyre implements Tyre{ @Override public void abrasion() { System.out.println("輪胎無磨損"); } }
3),建立座椅介面,並建立它的倆個實現類如下
/**座椅介面 * @author 曉電腦 */ public interface Chair { void message(); } /** * 低端座椅 */ class LowChair implements Chair{ @Override public void message() { System.out.println("座椅沒有按摩功能"); } } /** * 高階座椅 */ class HigEndChair implements Chair{ @Override public void message() { System.out.println("座椅自帶按摩功能"); } }
4),建立車類的工廠類介面 ,並建立倆個它的實現類如下
/**建立車工廠類 介面
* @author 曉電腦
*/
public interface CarFactory {
//建立座椅
Chair createChair();
//建立輪胎
Tyre createTyre();
//建立發動機
Engline createEnline();
}
/**
* 低端汽車
*/
class LowCarFactory implements CarFactory{
@Override
public Chair createChair() {
return new LowChair();
}
@Override
public Tyre createTyre() {
return new lowTyre();
}
@Override
public Engline createEnline() {
return new LowEngline();
}
}
/**
* 高階汽車
*/
class HigEndCarFactory implements CarFactory{
@Override
public Chair createChair() {
return new HigEndChair();
}
@Override
public Tyre createTyre() {
return new HighEndTyre();
}
@Override
public Engline createEnline() {
return new HigEndEngline();
}
}
5),建立 Client 客戶端進行測試
/**測試客戶端
* @author 曉電腦
*/
public class Client {
public static void main (String[] args) {
//建立高階汽車工廠類
HigEndCarFactory factory = new HigEndCarFactory();
//座椅
Chair chair = factory.createChair();
chair.message();
//發動機
Engline enline = factory.createEnline();
enline.start();
//輪胎
Tyre tyre = factory.createTyre();
tyre.abrasion();
}
}
我們來繪製這個uml類圖, 如下
工廠模式要點總結:
- 簡單工廠模式(靜態工廠模式) --> 雖然某種程度不符合設計原則 ,單實際使用最多 。
- 工廠方法模式 --> 不修改已有類的前提下 , 通過增加新的工廠類實現擴充套件 。
- 抽象工廠模式 --> 不可以增加產品 , 可以增加產品族 !