《Java與模式》學習筆記之五――抽象原廠模式(Abstract Factory Pattern)

來源:互聯網
上載者:User

問題:
        當系統要建立一組相關或者相互依賴的對象時, 請使用抽象原廠模式.
        抽象原廠模式可以向用戶端提供一個介面, 使得用戶端可以在不必指定產品的具體類型的情況下, 建立多個產品族中的產品對象. 這就是抽象工廠的用意.
類圖:

 

原始碼:
package com.designpatterns.AbstractFactory;
/**
 * 抽象工廠
 */
public interface AbstractFactory {
     public AbstractProductA CreateProductA();
     public AbstractProductB CreateProductB();
}

public interface AbstractProductA {
     public void Operation();
}

public interface AbstractProductB {
     public void Operation();
}

public class ConcreteFactory1 implements AbstractFactory{
       public AbstractProductA CreateProductA()
       {
                 return new ProductA1();
       }
 
       public AbstractProductB CreateProductB()
       {
                 return new ProductB1();
       }
}

public class ConcreteFactory2 implements AbstractFactory{ 
        public AbstractProductA CreateProductA()
        {
                 return new ProductA2();
        }
 
        public AbstractProductB CreateProductB()
        {
                return new ProductB2();
       }
}

public class ProductA1 implements AbstractProductA {
        public ProductA1()
        {
                  System.out.println("ProductA1...");
        }
 
        public void Operation() {} 
}

public class ProductA2 implements AbstractProductA {
        public ProductA2()
        {
                    System.out.println("ProductA2...");
        }
 
        public void Operation() {} 
}

public class ProductB1 implements AbstractProductB {
        public ProductB1()
        {
                  System.out.println("ProductB1...");
        }
 
        public void Operation() {} 
}

public class ProductB2 implements AbstractProductB {
         public ProductB2()
         {
                System.out.println("ProductB2...");
         }
         public void Operation() {} 
}

/**
 * 用戶端類
 */
public class Client {
         public static void main(String[] args) {
                  AbstractFactory af1 = new ConcreteFactory1();
                  af1.CreateProductA();
                  af1.CreateProductB();

                  AbstractFactory af2 = new ConcreteFactory2();
                  af2.CreateProductA();
                  af2.CreateProductB();
 } 
}

討論:
    AbstractFactory模式是為建立一組(有多類)相關或依賴的對象提供建立介面, 而Factory模式是為一類對象提供建立介面或延遲物件的建立到子類中實現. AbstractFactory模式通常都是使用Factory模式實現, 如上例所示.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.