设计模式-创建型-抽象工厂模式
2018-03-06 22:22
281 查看
今天是工厂模式三兄弟的最后一个模式叫抽象工厂模式,抽象工厂模式与其他两兄弟在产品类上也是一样,无非就是工厂类的区别,简单工厂模式和工厂模式都是一个工厂只生产一种产品,但是在抽象工厂中一个工厂可以生产多种商品。举一个不太恰当的例子。有巧克力和面包两种食品,分别有富民食品厂和兴旺食品厂两个厂家生产。代码如下:
/// <summary>
/// 食品类
/// </summary>
public abstract class Food
{
/// <summary>
/// 用于显示食品类型
/// </summary>
public abstract void Show();
}
/// <summary>
/// 巧克力类
/// </summary>
public class QiaoKeLi : Food
{
public override void Show()
{
Console.Write("巧克力");
}
}
/// <summary>
/// 面包类
/// </summary>
public class Bread : Food
{
public override void Show()
{
Console.Write("面包");
}
}
public abstract class AbstractFactory //抽象工厂基类
{
public abstract Food CreateQiaoKeLi();
public abstract Food CreateBread();
}
public class FuMingFacctory : AbstractFactory//富民食品加工厂
{
public override Food CreateQiaoKeLi()
{
Console.Write("兴旺工厂出品巧克力");
return new QiaoKeLi();
}
public override Food CreateBread()
{
Console.Write("富民工厂出品面包");
return new Bread();
}
}
public class XingWangFacctory : AbstractFactory//兴旺食品加工厂
{
public override Food CreateQiaoKeLi()
{
Console.Write("兴旺工厂出品巧克力");
return new QiaoKeLi();
}
public override Food CreateBread()
{
Console.Write("兴旺工厂出品的面包");
return new Bread();
}
}
//客户端调用
AbstractFactory factory = new FuMingFacctory();
factory.CreateBread();
factory.CreateQiaoKeLi();
AbstractFactory mfactory = new XingWangFacctory();
mfactory.CreateBread();
mfactory.CreateQiaoKeLi();
/// <summary>
/// 食品类
/// </summary>
public abstract class Food
{
/// <summary>
/// 用于显示食品类型
/// </summary>
public abstract void Show();
}
/// <summary>
/// 巧克力类
/// </summary>
public class QiaoKeLi : Food
{
public override void Show()
{
Console.Write("巧克力");
}
}
/// <summary>
/// 面包类
/// </summary>
public class Bread : Food
{
public override void Show()
{
Console.Write("面包");
}
}
public abstract class AbstractFactory //抽象工厂基类
{
public abstract Food CreateQiaoKeLi();
public abstract Food CreateBread();
}
public class FuMingFacctory : AbstractFactory//富民食品加工厂
{
public override Food CreateQiaoKeLi()
{
Console.Write("兴旺工厂出品巧克力");
return new QiaoKeLi();
}
public override Food CreateBread()
{
Console.Write("富民工厂出品面包");
return new Bread();
}
}
public class XingWangFacctory : AbstractFactory//兴旺食品加工厂
{
public override Food CreateQiaoKeLi()
{
Console.Write("兴旺工厂出品巧克力");
return new QiaoKeLi();
}
public override Food CreateBread()
{
Console.Write("兴旺工厂出品的面包");
return new Bread();
}
}
//客户端调用
AbstractFactory factory = new FuMingFacctory();
factory.CreateBread();
factory.CreateQiaoKeLi();
AbstractFactory mfactory = new XingWangFacctory();
mfactory.CreateBread();
mfactory.CreateQiaoKeLi();
相关文章推荐
- Java设计模式(3)——创建型模式之抽象工厂模式(Abstract Factory)
- 设计模式-抽象工厂模式(创建型模式)
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- 创建型设计模式-抽象工厂模式
- 第三篇、创建型设计模式——抽象工厂模式
- 设计模式之创建型模式―― 1.3 抽象工厂模式
- java创建型设计模式——抽象工厂模式
- 设计模型之创建型模式之抽象工厂模式(Abstract Factory)
- 设计模式笔记(3)---抽象工厂模式(创建型)
- [导入]C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
- java设计模式(创建型)之抽象工厂模式
- 设计模式学习笔记--抽象工厂模式(Abstract Factory Pattern)【创建型模式】
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- 设计模式笔记(3)---抽象工厂模式(创建型)
- C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】
- 23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)
- 设计模式-创建型-抽象工厂模式(Abstract Factory)
- 设计模式复习笔记 (4)创建型模式:抽象工厂模式
- JAVA设计模式(2) —<创建型>抽象工厂模式(Abstract Factory)
- 设计模式笔记(3)---抽象工厂模式(创建型)