您的位置:首页 > 编程语言 > C#

简单工厂 工厂模式 抽象工厂 之c#

2011-07-29 10:13 429 查看
前面介绍了策略和单例模式,这篇文章说一下简单工厂,工厂,抽象工厂的概念和应该场景

首先,从简单工厂开始:

AbstractFactory

/*其实工厂和抽象工厂没有多大区别,只不过是抽象工厂生产的商品是多个而已
通俗的说,就是抽象工厂模式的具体工厂里面会有多个实例具体对象的方法
更直观的就是,抽象工厂模式每个工厂一次造多个玩意,而工厂模式的每个工厂只造一个玩意*/
public abstract class Product
{
public abstract void work();
}
public class ProductA : Product
{
public override void work()
{
Console.Write("ProductA");
}
}
public class ProductB : Product
{
public override void work()
{
Console.Write("ProductB");
}
}
public abstract class Car
{
public abstract void Build();
}
public class CarA : Car
{
public override void Build()
{
Console.Write("Build CarA");
}
}
public class CarB : Car
{
public override void Build()
{
Console.Write("Build CarB");
}
}
public abstract class AbstractFactory
{
//工厂生产多个对象
public abstract Product newproduct();
public abstract Car newCar();
}
public class AbstractFactoryA : AbstractFactory
{
public override Product newproduct()
{
return new ProductA();//子类里面实现具体的实例化
}
public override Car newCar()
{
return new CarA();
}
}
public class AbstractFactoryB : AbstractFactory
{
public override Product newproduct()
{
return new ProductB();//子类里面实现具体的实例化
}
public override Car newCar()
{
return new CarB();
}
}

public class AbstractFactoryClient
{
public static void GetFactoryMethod()
{
AbstractFactory factorysubA = new AbstractFactoryA();
AbstractFactory factorysubB = new AbstractFactoryA();

Product pruductA = factorysubA.newproduct();
Product pruductB = factorysubB.newproduct();
Car factorycarA = factorysubA.newCar();

factorycarA.Build();

pruductA.work();
pruductB.work();
}
}


应用场景:封装变化点。创建一系列相互依赖的对象。

好了,到这里就把简单工厂,工厂,抽象工厂都介绍完了,抽象工厂的问题是如果有创建对象变化的时候,还是要变化代码,重新生成,后面会介绍用反射解决这个问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: