程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 設計模式之簡單工廠模式,設計模式工廠

設計模式之簡單工廠模式,設計模式工廠

編輯:關於.NET

設計模式之簡單工廠模式,設計模式工廠


1、編制類圖

2、打開vs2010

3、 依次點擊菜單“文件(F)”>新建(N)>”項目(P)”,彈出下面對話框:

4、 在彈出的對話框中,在模板選項下選擇“Visual C#”->“Windows”選項,最後選擇“控制台應用程序”。

 

5、 在名稱文本(N)框中輸入項目名稱“SimpleFactorySample”,解決方案名稱命名為“SimpleFactorySample”,並設置保存路徑。

6、其它項取默認值,然後點擊“確定按鈕”,將生成下面的解決方案。

7、 新建Chart類:抽象圖表接口,充當抽象產品類。 

8、新建HistogramChart類,表示柱狀圖類,充當具體產品類。

using System;

 

namespace SimpleFactorySample

{

    class HistogramChart : Chart 

    {

    public HistogramChart()

        {

    Console.WriteLine("創建柱狀圖"!);

    }

    public void Display()

        {

            Console.WriteLine("顯示柱狀圖!");

    }

    }

}

9、 新建PieChart類,表示餅狀圖類,充當具體產品類。

using System;

namespace SimpleFactorySample

{

    class PieChart : Chart 

    {

    public PieChart()

        {

    Console.WriteLine("創建餅狀圖!");

    }

    public void Display()

        {

    Console.WriteLine("顯示餅狀圖!");

    }

    }

}

10、 新建類LineChart,表示折線圖類,充當具體產品類。

using System;

namespace SimpleFactorySample

{

    class LineChart : Chart

    {

        public LineChart()

        {

    Console.WriteLine("創建折線圖!");

    }

        public void Display()

        {

    Console.WriteLine("顯示折線圖!");  

    }

}

11、 創建圖表工廠類ChartFactory,用於充當工廠類

using System; 

namespace SimpleFactorySample

{

    class ChartFactory

    {

        //靜態工廠方法

        public static Chart GetChart(string type)

        {

    Chart chart = null;

    if (type.Equals("histogram"))

            {

    chart = new HistogramChart();

    Console.WriteLine("初始化設置柱狀圖!");

    }

    else if (type.Equals("pie"))

            {

    chart = new PieChart();

    Console.WriteLine("初始化設置餅狀圖!");

    }

    else if (type.Equals("line"))

            {

    chart = new LineChart();

    Console.WriteLine("初始化設置折線圖!");

    }

    return chart;

    }

    }

}

12、更新客戶端測試類的代碼

using System;

using System.Configuration;

namespace SimpleFactorySample

{

    class Program

    {

        static void Main(string[] args)

        {

            /*

            Product product;

            product = Factory.GetProduct("A"); //通過工廠類創建產品對象

            product.MethodSame();

            product.MethodDiff();

            */

            Chart chart;

            //讀取配置文件

            string chartStr = ConfigurationManager.AppSettings["chartType"];

            chart = ChartFactory.GetChart(chartStr); //通過靜態工廠方法創建產品

            chart.Display();

            Console.Read();

        }

    }

}

新建並實現如下類:

using System;

namespace SimpleFactorySample

{

    abstract class Product

    {

        //所有產品類的公共業務方法

        public void MethodSame()

        {

            //公共方法的實現

        }

        //聲明抽象業務方法

        public abstract void MethodDiff();

    }

 

    class ConcreteProductA : Product

    {

        //實現業務方法

        public override void MethodDiff()

        {

            //業務方法的實現

        }

    }

    class ConcreteProductB : Product

    {

        //實現業務方法

        public override void MethodDiff()

        {

            //業務方法的實現

        }

    }

    class Factory

    {

        //靜態工廠方法

        public static Product GetProduct(string arg)

        {

            Product product = null;

            if (arg.Equals("A"))

            {

                product = new ConcreteProductA();

                //初始化設置product

            }

            else if (arg.Equals("B"))

            {

                product = new ConcreteProductB();

                //初始化設置product

            }

            return product;

        }

    }

}

namespace SimpleFactorySample

{

    /*

    abstract class Product

    {

        public abstract void Process();

    }

    class ConcreteProductA : Product

    {

        public override void Process()

        {

            //......

        }

    }

    class ConcreteProductB : Product

    {

        public override void Process()

        {

            //......

        }

    }

    class Factory

    {

        public static Product CreateProduct(char type)

        {

            switch(type)

            {

                case 'A':

                    return new ConcreteProductA(); break;

                case 'B':

                    return new ConcreteProductB(); break;

                //......

            }

        }

    }

    */

}

13、 編譯及運行程序,輸出如下結果:

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved