1. 程式人生 > >Java設計模式學習-抽象工廠模式

Java設計模式學習-抽象工廠模式

抽象工廠模式

  • 用來生產不同產品族的全部產品 。 (對於增加新的產品,無能為力,支援增加產品族)
  • 抽象工廠模式是工廠方法模式的升級版本 , 在有多個業務品種 , 業務分類時 , 通過抽象工廠模式產生需要的物件是一種非常好的解決方式 。

 

                        

 

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類圖, 如下

 

工廠模式要點總結:

  • 簡單工廠模式(靜態工廠模式)  -->  雖然某種程度不符合設計原則 ,單實際使用最多 。
  • 工廠方法模式   --> 不修改已有類的前提下 , 通過增加新的工廠類實現擴充套件 。
  • 抽象工廠模式   --> 不可以增加產品 , 可以增加產品族 !