Edward_jie

for you, my Hall of Frame

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
// "Handler"
using System;
using System.Collections.Generic;
using System.Text;

using System.Reflection;

namespace ConsoleApplication3
{
    abstract class Factory
    {
        abstract public ProductA ProductA();
        abstract public ProductB ProductB();
    }
    class WindowFactory : Factory
    {
        public override ProductA ProductA()
        {
            return new WindowProductA();
        }
        public override ProductB ProductB()
        {
            return new WindowProductB();
        }
    }
    class LinuxFactory : Factory
    {
        public override ProductA ProductA()
        {
            return new LinuxProductA();
        }
        public override ProductB ProductB()
        {
            return new LinuxProductB();
        }
    }
    abstract class ProductA
    {

    }
    abstract class ProductB
    {

    }
    class WindowProductA : ProductA
    {
        public WindowProductA() { Console.WriteLine("WindowProductA"); }
    }
    class WindowProductB : ProductB
    {
        public WindowProductB() { Console.WriteLine("WindowProductB"); }

    }
    class LinuxProductA : ProductA
    {
        public LinuxProductA() { Console.WriteLine("LinuxProductA"); }

    }
    class LinuxProductB : ProductB
    {
        public LinuxProductB() { Console.WriteLine("LinuxProductB"); }

    }
    class Program
    {
    public static void Main(string[] args)
    {
        string factoryName = System.Configuration.ConfigurationSettings.AppSettings["Factory"];
        Factory aFactory = (Factory)Assembly.GetExecutingAssembly().CreateInstance("ConsoleApplication3."+factoryName);
        ProductA SystemA = aFactory.ProductA();
        ProductB SystemB = aFactory.ProductB();
        Console.ReadKey();
    }
    }
}

 

 

App.config中的配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Factory" value="LinuxFactory"/>
  </appSettings>
</configuration>
posted on 2012-07-30 14:06  Edward_诺  阅读(215)  评论(0)    收藏  举报