反射工厂与泛型工厂

反射工厂:
using System;
using System.Collections.Generic;
using System.Text;

using System.Reflection;

namespace 工厂模式
{
    
class Program
    {
        
static void Main(string[] args)
        {
            交通工具 a 
= new 由工具类型产生工具(typeof(卡车));
            a.创建交通工具();
            交通工具 b 
= new 由工具类型产生工具(typeof(轿车));
            b.创建交通工具();
            Console.Read();
        }
    }

    
interface 交通工具
    {
        
void 创建交通工具();
    }

    
class 由工具类型产生工具 : 交通工具
    {
        Type 工具类型;

        
public 由工具类型产生工具(Type 工具类型)
        {
            
this.工具类型 = 工具类型;
        }

        
public void 创建交通工具()
        {
            
object _obj = Activator.CreateInstance(工具类型);
        }
    }

    
class 卡车
    {
        
public 卡车()
        {
            Console.WriteLine(
"卡车");
        }
    }

    
class 轿车
    {
        
public 轿车()
        {
            Console.WriteLine(
"轿车");
        }
    }
}
重构为泛型工厂:
using System;
using System.Collections.Generic;
using System.Text;

//using System.Reflection;

namespace 工厂模式
{
    
class Program
    {
        
static void Main(string[] args)
        {
            交通工具 a 
= new 泛型工厂<卡车>();
            a.创建交通工具();

            交通工具 b 
= new 泛型工厂<轿车>();
            b.创建交通工具();

            Console.Read();
        }
    }

    
interface 交通工具
    {
        
void 创建交通工具();
    }

    
class 泛型工厂<工具类型> : 交通工具 where 工具类型: new()
    {
        
public 泛型工厂()
        { }

        
public void 创建交通工具()
        {
            工具类型 工具 
= new 工具类型();
        }
    }

    
class 卡车
    {
        
public 卡车()
        {
            Console.WriteLine(
"卡车");
        }
    }

    
class 轿车
    {
        
public 轿车()
        {
            Console.WriteLine(
"轿车");
        }
    }
}

posted on 2006-06-04 17:45  萝卜青菜  阅读(1143)  评论(0编辑  收藏  举报

导航