类图
代码度量
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Configuration;
namespace 抽象工厂反射版
{
/// <summary>
/// 生产工厂
/// </summary>
class Factory
{
private readonly static string AssemblyName = "抽象工厂反射版";
private readonly static string CarName = ConfigurationSettings.AppSettings["CarName"];
private readonly static string PhoneName = ConfigurationSettings.AppSettings["PhoneName"];
/// <summary>
/// 生产汽车流水线
/// </summary>
/// <returns></returns>
public static ICar CreateCar()
{
string typeName = AssemblyName + "." + CarName;
return (ICar)Assembly.Load(AssemblyName).CreateInstance(typeName);
}
/// <summary>
/// 生产手机流水线
/// </summary>
/// <returns></returns>
public static IPhone CreatePhone()
{
string typeName = AssemblyName + "." + PhoneName;
return (IPhone)Assembly.Load(AssemblyName).CreateInstance(typeName);
}
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="CarName" value="BMWCar"/>
<add key ="PhoneName" value="ApplePhone"/>
</appSettings>
</configuration>
static void Main(string[] args)
{
//界面逻辑代码
ICar car1 = Factory.CreateCar();
ICar car2 = Factory.CreateCar();
car1.Introduce();
car2.Introduce();
IPhone phone1 = Factory.CreatePhone();
IPhone phone2 = Factory.CreatePhone();
phone1.Call();
phone2.Call();
}
}