快速实现—简易抽象工厂的实现和调用
抽象工厂的实现:
using System;
using System.Reflection;
namespace FactorySalary
{
/// <summary>
/// AbstractFactory类
/// </summary>
public abstract class AbstractFactory
{
public static AbstractFactory GetInstance()
{
string factoryName = ConfigurationManager.AppSettings["FactoryName"];
AbstractFactory instance;
if(factoryName != "")
instance = (AbstractFactory)Assembly.Load(factoryName).CreateInstance(factoryName);
else
instance = null;
return instance;
}
public abstract Tax CreateTax();
public abstract Bonus CreateBonus();
}
}
配置文件:
(可配置为AmericanFactory,ChineseFactory,JapanFactory等,动态在抽象工厂中实例化)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="factoryName" value="AmericanFactory"></add>
</appSettings>
</configuration>
客户端调用:
using System;
namespace FactorySalary
{
public class Calculator
{
public static void Main(string[] args)
{
Tax taxF = new AbstractFactory().CreateTax();
double taxVal = taxF.Calculate();
Bonus bonusF = new AbstractFactory().CreateBonus();
double bonusVal = bonusF.Calculate();
double salaryTotal = 4000 + bonusVal - taxVal;
Console.WriteLine(String.Format("{0} salary is:{1}",ConfigurationManager.AppSettings["FactoryName"].Replace("Factory",""),salaryTotal));
Console.ReadLine();
}
}
}
浙公网安备 33010602011771号