工廠模式

工廠模式

簡介

   工廠方法模式:定義一個用於創建對象的接口,讓子類決定實例化哪一個類。

工廠方法是一個類的實例化延遲到其子類。

後期對操作擴展時只需要添加實例化接口的方法,不需要修改。

例子

還舉簡單工廠模式中的例子。

分割名字的方法

classSplitName

    {

        privatestring frName, lName;

 

        publicstring LName

        {

            get { return lName; }

            set { lName = value; }

        }

 

        publicstring FrName

        {

            get { return frName; }

            set { frName = value; }

        }

}


繼承封方法的子類

逗號分割方法

public CommaSplit(string name)

        {

            int i = name.IndexOf(",");

            if (i > 0)

            {

               FrName = name.Substring(0, i);

               LName = name.Substring(i + 1);

            }

            else

            {

               FrName = name;

               LName = "";

            }

        }


空格分割方法

classBlankSplit : SplitName

    {

        public BlankSplit(string name)

        {

            int i = name.IndexOf(" ");

            if (i > 0)

            {

               FrName = name.Substring(0, i);

                LName= name.Substring(i + 1);

            }

            else

            {

               FrName = name;

               LName = "";

            }

        }

 

}


工廠

工廠用於創建分割姓名的對象

接口

interfaceIFactoryFunction

    {

        SplitName CreateSplitObject(string name);

}


創建逗號分割的對象

classCommaObject : IFactoryFunction

    {

        publicSplitName CreateSplitObject(string name)

        {

            returnnewCommaSplit(name);

        }

    }


空格分割

classBlankObject : IFactoryFunction

    {

 

        publicSplitName CreateSplitObject(string name)

        {

            returnnewBlankSplit(name);

        }

}


客戶端使用

  staticvoid Main(string[] args)

        {

            Console.WriteLine("請輸入你的姓名");

            string inputName = Console.ReadLine();

            IFactoryFunction operFactory = newCommaObject();//創建工廠用逗號分割

            SplitName splitName =operFactory.CreateSplitObject(inputName);//實例化分割的對象

            Console.WriteLine("姓"+splitName.FrName);

            Console.WriteLine("名"+splitName.LName);

 

            Console.ReadKey(true);

 

        }


總結

工廠方法模式實現時,客戶端需要決定實例化哪一個工廠來實現運算類,選擇判斷的問題還是存在的。工廠方法把簡單工廠的內部邏輯判斷移到了客戶端來進行。

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