抽象工厂 AbstractFactory

本文介绍了一个使用C#实现的抽象工厂模式案例,通过定义抽象工厂接口来创建不同类型的食品和商品对象,展示了如何通过该模式简化对象创建过程,并提供了一个具体的实现示例。

interface AbstractFactoryPattern { ICommodity MakeCommodity(Commodity commodity); IFood MakeFood(Food food); }

抽象工厂接口

using System; class FoodAndCommodityFactory : AbstractFactoryPattern { #region AbstractFactoryPattern 成员 public ICommodity MakeCommodity(Commodity commodity) { switch (commodity) { case Commodity.Cap: return new Cap(); break; case Commodity.Shoes: return new Shoes(); break; case Commodity.Sock: return new Sock(); break; case Commodity.Trousers: return new Trousers(); break; default: throw new Exception("参数无效"); } } public IFood MakeFood(Food food) { switch (food) { case Food.Chips: return new Chips(); break; case Food.Fish: return new Fish(); break; case Food.Hamburger: return new Hamburger(); break; case Food.SandWich: return new SandWich(); break; default: throw new Exception("参数无效"); } } #endregion }

抽象工厂接口实现者

interface IFood { void Print(); }

食物接口

using System; class Chips : IFood { #region IFood 成员 public void Print() { Console.WriteLine("Im chips!"); } #endregion }

食物A

using System; class Fish : IFood { #region IFood 成员 public void Print() { Console.WriteLine("Im Fish"); } #endregion }

食物B

using System; class SandWich : IFood { #region IFood 成员 public void Print() { Console.WriteLine("Im a SandWich!"); } #endregion }

食物C

interface ICommodity { void Print(); }

产品接口

using System; class Cap : ICommodity { public Cap() { } public void Print() { Console.WriteLine("Im a Cap!"); } }

产品实现A

using System; class Shoes:ICommodity { public Shoes() { } public void Print() { Console.WriteLine("Im a Shoes!"); } }

产品实现B

using System; class Sock : ICommodity { public Sock() { } public void Print() { Console.WriteLine("Im a Sock!"); } }

产品实现C

using System; class Trousers : ICommodity { public Trousers() { } public void Print() { Console.WriteLine("Im Trousers!"); } }

产品实现D

using System; using System.Collections.Generic; using System.Text; namespace FactoryPattern { class Program { static void Main(string[] args) { ICommodity commodity; IFood food; //抽象工厂 FoodAndCommodityFactory facf = new FoodAndCommodityFactory(); commodity= facf.MakeCommodity(Commodity.Cap); food = facf.MakeFood(Food.Chips); commodity.Print(); food.Print(); Console.ReadKey(); } } }

调用代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值