C#设计模式(4)——抽象工厂模式
2017-01-10 17:22
337 查看
一、概念:将对象的创建交给一个叫做工厂的对象来统一进行处理。主要是将对象的依赖关系进行解耦,消除对象之间的直接耦合。
二、模型:
1、逻辑模型
2、物理模型
三、代码实现:
1、抽象工厂代码:
2、苹果工厂代码
3、香蕉工厂代码
4、橘子工厂代码
5、模拟调用代码
二、模型:
1、逻辑模型
2、物理模型
三、代码实现:
1、抽象工厂代码:
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 水果抽象工厂 /// </summary> public abstract class FruitAbstractFactory { /// <summary> /// 水果名称,表示哪种水果如:苹果、香蕉、橘子 /// </summary> public string FruitName { get; set; } /// <summary> /// 抽象方法,获取要批发水果的 /// </summary> /// <returns>要批发的水果</returns> public abstract string GetCurrentFruit(); } }
2、苹果工厂代码
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 苹果工厂 /// </summary> public class AppleFactory : FruitAbstractFactory { public AppleFactory() { FruitName = "苹果"; } /// <summary> /// 重写基类的获取水果方法 /// </summary> /// <returns>要批发的水果</returns> public override string GetCurrentFruit() { return "给你:" + base.FruitName; } } }
3、香蕉工厂代码
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 香蕉工厂 /// </summary> public class BananaFactory : FruitAbstractFactory { public BananaFactory() { FruitName = "香蕉"; } public override string GetCurrentFruit() { return "给你:" + base.FruitName; } } }
4、橘子工厂代码
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 橘子工厂 /// </summary> public class TangerineFactory : FruitAbstractFactory { public TangerineFactory() { FruitName = "橘子"; } public override string GetCurrentFruit() { return "给你:" + base.FruitName; } } }
5、模拟调用代码
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { FruitAbstractFactory fruitfactory = new AppleFactory();//苹果工厂 Console.WriteLine(fruitfactory.GetCurrentFruit()); Console.ReadLine(); fruitfactory = new BananaFactory();//香蕉工厂 Console.WriteLine(fruitfactory.GetCurrentFruit()); Console.ReadLine(); fruitfactory = new TangerineFactory();//橘子工厂 Console.WriteLine(fruitfactory.GetCurrentFruit()); Console.ReadLine(); } } }
相关文章推荐
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- c#设计模式--抽象工厂模式
- C#设计模式(4)——抽象工厂模式
- C#设计模式——抽象工厂模式(Abstract Factory Pattern)
- 设计模式C#描述——抽象工厂模式
- 【转】设计模式C#描述——抽象工厂模式
- C#设计模式编程之抽象工厂模式新解
- C#设计模式编程之抽象工厂模式新解
- C#设计模式(3):抽象工厂模式(Abstract Factory)(转载)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 转贴:C#设计模式编程之抽象工厂模式新解
- C# 设计模式 之 抽象工厂模式
- C#设计模式之工厂模式(Factory)--03 抽象工厂模式(Abstract Factory)
- [导入]C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
- C#设计模式之抽象工厂模式
- C#设计模式之3——抽象工厂模式
- C#设计模式之工厂模式(Factory)--04 抽象工厂模式中访问具体产品类的属性