抽象工厂模式
今天自已写了一个。 主要还是要用到抽像类。
其实说来就几点: 1 一个抽像工厂类。 一堆工厂继承于它。
2 一个抽像类品类。 一堆产品继承它。
贴出我的代码。
public class ChinaTax : ITax
{
public override string GetTax()
{
return "ChinaTax";
}
}
public class AmericanTax : ITax
{
public override string GetTax()
{
return "AmericanTax";
}
}
public abstract class ITax
{
public abstract string GetTax();
}
public class ChinaFactory :AbstractFactory
{
public override ITax CreatTax()
{
return new ChinaTax();
}
}
public class AmericanFactory : AbstractFactory
{
public override ITax CreatTax()
{
return new AmericanTax();
}
}
public abstract class AbstractFactory
{
public abstract ITax CreatTax();
}
class Create
{
public void Show(AbstractFactory oAbstractFactory)
{
ITax oITax= oAbstractFactory.CreatTax();
Console.Write(oITax.GetTax());
}
}
这里开始调用代码:
static void Main(string[] args)
{
string assemblyName = ConfigurationManager.AppSettings["nameSpaceName"];
string fullTypeName = string.Concat(ConfigurationManager.AppSettings["nameSpaceName"], ".", ConfigurationManager.AppSettings["typename"]);
AbstractFactory factory = (AbstractFactory)Assembly.Load(assemblyName).CreateInstance(fullTypeName);
Create clothes = new Create();
clothes.Show(factory);
Console.Read();
}
在App.config中
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!--一般情况下只需改第二个"typename"就行了,具体工厂类 -->
<add key="nameSpaceName" value="ConsoleApplication1"/>
<add key="typename" value="ChinaFactory"/>
</appSettings>
</configuration>
如果你改的话。 只需要改第二个即可。