C#设计模式——抽象工厂模式
Posted 雪中狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#设计模式——抽象工厂模式相关的知识,希望对你有一定的参考价值。
一、概念:将对象的创建交给一个叫做工厂的对象来统一进行处理。主要是将对象的依赖关系进行解耦,消除对象之间的直接耦合。
二、模型:
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#设计模式——抽象工厂模式(原文转自:http://blog.jobbole.com/78059/)