ASP.NETでの抽象ファクトリモード

2988 ワード

一、抽象工場の概念:
抽象ファクトリ・モードは、関連するオブジェクトまたは相互に依存するオブジェクトのセットを作成するためのインタフェースであり、特定のクラスを指定する必要はありません.
前編では工場仕様モデルをご紹介しました(https://blog.csdn.net/Jie_Studio/article/details/88970736)、ファクトリメソッドモデルは、単純ファクトリモデルの欠点を克服するために設計され、単純ファクトリモデルのファクトリクラスは、製品クラスの増加に伴って追加のコードを追加する必要がある)、ファクトリメソッドモデルの各特定のファクトリクラスは、単一のインスタンスの作成のみを完了するため、優れた拡張性を有する.しかし、現実の生活の中で、1つの工場が単一の製品だけを作成するという例は少ない.現在の工場は多元化しているため、1つの工場が一連の製品を作成している.もし私たちがこのようなシステムを設計する場合、工場方法モデルは明らかにここでは適用されないが、抽象的な工場モデルは一連の製品作成の問題をよく解決することができる.これは本編で紹介する内容である.
同様に、前例と同様に簡単な修正を行いました.
1.2つの特定の製品の抽象クラスを定義します.
    /// 
    ///       ,       
    /// 
    public abstract class Milk
    {
        //     
        public abstract void Print();
    }

    /// 
    ///       ,       
    /// 
    public abstract class Juice
    {
        //     
        public abstract void Print();
    }

2.ローカルクラス継承製品クラスの作成:
    /// 
    ///       
    /// 
    public class ShangHaiMilk : Milk
    {
        public override void Print()
        {
            Console.WriteLine("      !");
        }
    }
    /// 
    ///       
    /// 
    public class ShangHaiJuice : Juice
    {
        public override void Print()
        {
            Console.WriteLine("      !");
        }
    }

    /// 
    ///       
    /// 
    public class BeiJingMilk : Milk
    {
        public override void Print()
        {
            Console.WriteLine("      !");
        }
    }
    /// 
    ///       
    /// 
    public class BeiJingJuice : Juice
    {
        public override void Print()
        {
            Console.WriteLine("      !");
        }
    }

3.抽象的な工場クラスを定義し、2つの異なる場所の牛乳とジュースを作成するインタフェースを提供する
    /// 
    ///      ,                   
    /// 
    public abstract class AbstractFactory
    {
        //    
        public abstract Milk CreateMilk();

        //    
        public abstract Juice CreateJuice();
    }

4.地域工場継承抽象工場クラスの作成:
    /// 
    ///                 
    /// 
    public class ShangHaiFactory : AbstractFactory
    {
        public override Juice CreateJuice()
        {
            return new ShangHaiJuice();
        }

        public override Milk CreateMilk()
        {
            return new ShangHaiMilk();
        }
    }

    /// 
    ///                 
    /// 
    public class BeiJingFactory : AbstractFactory
    {
        public override Juice CreateJuice()
        {
            return new BeiJingJuice();
        }

        public override Milk CreateMilk()
        {
            return new BeiJingMilk();
        }
    }

利点:抽象ファクトリモデルは、特定の製品の作成を特定のファクトリのサブクラスに遅延させ、オブジェクトの作成をカプセル化し、クライアントと特定の製品クラスとの依存性を低減し、システム結合度を低くし、後期のメンテナンスと拡張に有利にします.
以上、私個人の抽象工場モデルに対する理解です.足りないところがあれば、指摘してほしい.