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

2350 ワード

一、工場モデルとは何ですか.
1.ファクトリ・モードとは、オブジェクトを作成するためのインタフェースを定義し、サブクラスにどのクラスをインスタンス化するかを決定させることです.
2.パッケージを初期化します.すなわち,クラスのインスタンスが必要な場合,同じ属性のインスタンスが必要である場合,初期化のたびに動作が同じであれば,ファクトリモードで初期化をカプセル化し,動作を簡素化することができる.
工場モードと前編の簡単な工場モード(https://blog.csdn.net/Jie_Studio/article/details/88963624)差は少なく、単純な工場のアップグレードに相当し、小さなケースで示します.
1.まず、同じように食品を定義する抽象類です.

    /// 

    ///       

    /// 

    public abstract class Food

    {

        //            

        public abstract void Print();

    }

2.具体的に実現する食品類を定義する:

    /// 

    ///    

    /// 

    public class Milk : Food

    {

 

        public override void Print()

        {

            Console.WriteLine("    !");

        }

 

    }

 

    /// 

    ///    

    /// 

    public class Spicystrips : Food

    {

 

        public override void Print()

        {

            Console.WriteLine("    ");

        }

 

    }

3.小売工場クラスを定義します.
    /// 
    ///      (    )
    /// 
    public abstract class FoodSimpleFactory
    {

        public abstract Food CreateFacory();

    }

4.定義されたカテゴリファクトリ:
    /// 
    ///      
    /// 
    public class DrinkFactory : FoodSimpleFactory
    {

        public override Food CreateFacory()
        {

            return new Milk();

        }

    }

    /// 
    ///      
    /// 
    public class SnacksFactoyr : FoodSimpleFactory
    {

        public override Food CreateFacory()
        {

            return new Spicystrips();

        }

    }

5.最後にクライアントによって呼び出されます.
    class Program
    {
        static void Main(string[] args)
        {

            //     --   
            FoodSimpleFactory foodfactory = new DrinkFactory();

            //  
            Food food = foodfactory.CreateFacory();
            food.Print();

            Console.Read();

        }
    }

6.おやつ類に変更したい場合は、変更するだけです.
//     --   

FoodSimpleFactory foodfactory = new SnacksFactoyr();

ファクトリモードの使用シーン:
1.クライアントは、作成したオブジェクトのクラスを知る必要はありません.例では、各ピクチャローダが具体的に名前を知らず、そのファクトリ名を作成するだけで作成プロセスが完了します.
2.クライアントは、サブクラスを使用して、対応するオブジェクトの作成を指定できます.