关注对象的创建过程 对类的实例化过程进行抽象 对象的创建与使用分离
定义一个工厂类,根据参数的不同返回不同类的实例
简单工厂模式结构图
工厂角色:负责创建所有产品实例 可被外界直接调用
抽象产品:是所创建对象的父类 封装了公共方法
具体产品角色:创建目标,继承抽象产品,实现抽象方法
实现示例:
Product类
abstract class Product
{
public void MethodSame()
{
Console.WriteLine("The same Method");
}
public abstract void MethodDiff();
}
ConcreteProductA类
class ConcreteProductA : Product
{
public override void MethodDiff()
{
Console.WriteLine("MethodDiff A");
}
}
ConcreteProductB类
class ConcreteProductB : Product
{
public override void MethodDiff()
{
Console.WriteLine("MethodDiff B");
}
}
Factory类
class Factory
{
public static Product GetProduct(string arg)
{
Product product = null;
if (arg.Equals("A"))
product = new ConcreteProductA();
else if (arg.Equals("B"))
product = new ConcreteProductB();
return product;
}
}
main函数调用
//读取配置文件
string productType = ConfigurationManager.AppSettings["productType"];
Product product = Factory.GetProduct(productType);
product.MethodSame();
product.MethodDiff();
App.config内容
<configuration>
<appSettings>
<add key="productType" value="B"/>
appSettings>
configuration>
示例二:图表库结构图