1. 程式人生 > 實用技巧 >抽象工廠設計模式

抽象工廠設計模式

1.說明

  前面介紹的工廠方法模式中考慮的是一類產品的生產,如畜牧場只養動物、電視機廠只生產電視機、計算機軟體學院只培養計算機軟體專業的學生等。

  同種類稱為同等級,也就是說:工廠方法模式只考慮生產同等級的產品,但是在現實生活中許多工廠是綜合型的工廠,能生產多等級(種類) 的產品,如農場裡既養動物又種植物,電器廠既生產電視機又生產洗衣機或空調,大學既有軟體專業又有生物專業等。

2.特點

  模式的結構與實現

  抽象工廠模式同工廠方法模式一樣,也是由抽象工廠、具體工廠、抽象產品和具體產品等 4 個要素構成,但抽象工廠中方法個數不同,抽象產品的個數也不同。現在我們來分析其基本結構和實現方法。

  1. 模式的結構

  抽象工廠模式的主要角色如下。

  1. 抽象工廠(Abstract Factory):提供了建立產品的介面,它包含多個建立產品的方法 newProduct(),可以建立多個不同等級的產品。
  2. 具體工廠(Concrete Factory):主要是實現抽象工廠中的多個抽象方法,完成具體產品的建立。
  3. 抽象產品(Product):定義了產品的規範,描述了產品的主要特性和功能,抽象工廠模式有多個抽象產品。
  4. 具體產品(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");
        }
    }
}