C# 工厂模式 望大家 赐教
以前写代码 只考虑 方法实行,这几天开始研究模式,第一个模式 是工厂模式,下面是一个小例子,请大家看看如何改进,能够使它达到更大的可扩展性和尽量少的修改量。
代码如下:
using System;
using System.Collections.Generic;
using System.Text;
//工厂模式:new的多态跟封装,(抽象工厂,具体工厂,抽象产品,具体产品)
namespace FactoryText
{
abstract class Produce
{
public abstract void productName();
}
//具体产品
class productA : Produce
{
public override void productName()
{
Console.WriteLine("product A");
}
}
class productB : Produce
{
public override void productName()
{
Console.WriteLine("product B");
}
}
//抽象工厂
abstract class abstructFactory
{
public abstract Produce produce(string produceType);
}
//具体工厂
class Factory1 : abstructFactory
{
public override Produce produce(string produceType)
{
Produce result = null;
try
{
Type type = Type.GetType(produceType,true);
result = (Produce) Activator.CreateInstance(type);
}
catch (TypeLoadException e)
{
Console.WriteLine("找不到你的类型:"+e.Message);
}
return result;
}
}
class Program
{
static void Main(string[] args)
{
abstructFactory text = new Factory1();
text.produce("FactoryText.productA").productName();
}
}
}
[解决办法]
using System;
using System.Collections.Generic;
using System.Text;
namespace Galsun.HH.FCX.Mode
{
/// <summary>
///
/// 此文件由模型系统生成,注释根据数据库的扩展字段MS_Description得到 模型转换V2.0 作者:刘朝林
/// 生成时间:2013-3-8 15:57:30
/// </summary>
[Serializable]
public class ba_countyinfo
{
private int _id = 0;
private string _ccountycode = string.Empty;
private string _ccountyname = string.Empty;
private string _cmarketcode = string.Empty;
private string _cdccode = string.Empty;
private int _orderid = 0;
/// <summary>
///
/// </summary>
public int id
{
get { return _id; }
set { _id = value; }
}
/// <summary>
/// 县份代码
/// </summary>
public string cCountyCode
{
get { return _ccountycode; }
set { _ccountycode = value; }
}
/// <summary>
/// 县份名称
/// </summary>
public string cCountyName
{
get { return _ccountyname; }
set { _ccountyname = value; }
}
/// <summary>
/// 市场代码
/// </summary>
public string cMarketCode
{
get { return _cmarketcode; }
set { _cmarketcode = value; }
}
/// <summary>
/// 区域代码
/// </summary>
public string cDCCode
{
get { return _cdccode; }
set { _cdccode = value; }
}
/// <summary>
/// 排序
/// </summary>
public int OrderID
{
get { return _orderid; }
set { _orderid = value; }
}
}
}