Abstract Factory

第二章:      Abstract Factory( 抽象工廠)

創建一系列相互依賴的對象

主要用語多系列對象的創建(對象保持恆定)

不能用於對象的改變

意圖(Itente)

提供一個接口,讓該接口負責創建一系列"相關的或者相互依賴的對象",無需指定它們具體的類.

結構(Stucture)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

簡單的代碼實現部分:

 

using System;
using System.Collections.Generic;
using System.Text;
using AbstractFactory1;
using Customer;
using Main;
namespace AbstractFactory1
{
    
//抽象工廠(AbstractFactory)
    public abstract class AbstractFactory
    
{
        
public abstract ISelect Select();
        
public abstract IUpdate Update();
    }

    
//共同方法接口(AbsractProjectA)
    public interface ISelect
    
{
        
void Select();
    }

    
//共同方法接口(AbsractProjectB)
    public interface IUpdate
    
{
        
void Update();
    }


   
//具體工廠類(ContenteFactory1)
    public class A1Factory : AbstractFactory
    
{
        
public override ISelect Select()
        
{
            
return new A1Select();
        }

        
public override IUpdate Update()
        
{
            
return new A1Update();
        }

    }


    
//具體實現方法ProjectA1
    public class A1Select : ISelect
    
{
        
public void Select()
        
{ }
    }

 
//具體實現方法ProjectB1
    public class A1Update : IUpdate
    
{
        
public void Update()
        
{ }
    }

}


//控制類,實現面向接口編程
namespace Customer
{
    
public class Manager
    
{
        
private AbstractFactory factory = null;
        
private ISelect select = null;
        
private IUpdate update = null;
        
public Manager(AbstractFactory factory)
        
{
            
this.factory = factory;
            select 
= this.factory.Select();
            update 
= this.factory.Update();
        }


        
public void Select()
        
{
            select.Select();
        }


        
public void Update()
        
{
            update.Update();
        }

    }

}


//調用
namespace Main
{
       
public class User
       
{
           
public static void Main()
           
{
               Manager manager 
= new Manager(new A1Factory());
               manager.Select();
               manager.Update();
           }

       }

}

 

 

 

注意:

1.如果沒有對應"多系列的對象變化"的需求,則沒有必要使用Abstract Factoty模式,使用簡單的靜態工廠模式足了.

2."系列對象"是指對象之間有互相依賴,互相作用的的關係.

3.抽象工廠模式主要適用與"多系列"需求,而難以用與"新對象"的需求變動

4.抽象工廠一般和Factory Method共同使用,來應對"對象創建"的需求變化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章