博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#设计模式(4)——抽象工厂模式
阅读量:4708 次
发布时间:2019-06-10

本文共 2656 字,大约阅读时间需要 8 分钟。

一、概念:将对象的创建交给一个叫做工厂的对象来统一进行处理。主要是将对象的依赖关系进行解耦,消除对象之间的直接耦合。

二、模型:

1、逻辑模型

2、物理模型

 

三、代码实现:

1、抽象工厂代码:

using System;  using System.Collections.Generic;  using System.Text;   namespace ConsoleApplication1  {      ///       /// 水果抽象工厂      ///       public abstract class FruitAbstractFactory      {          ///           /// 水果名称,表示哪种水果如:苹果、香蕉、橘子          ///           public string FruitName { get; set; }          ///           /// 抽象方法,获取要批发水果的          ///           /// 
要批发的水果
public abstract string GetCurrentFruit(); } }

2、苹果工厂代码

using System;  using System.Collections.Generic;  using System.Text;   namespace ConsoleApplication1  {      ///       /// 苹果工厂      ///       public class AppleFactory : FruitAbstractFactory      {          public AppleFactory()          {              FruitName = "苹果";          }          ///           /// 重写基类的获取水果方法          ///           /// 
要批发的水果
public override string GetCurrentFruit() { return "给你:" + base.FruitName; } } }

3、香蕉工厂代码

using System;  using System.Collections.Generic;  using System.Text;   namespace ConsoleApplication1  {      ///       /// 香蕉工厂      ///       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  {      ///       /// 橘子工厂      ///       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();          }      }  }

 

转载于:https://www.cnblogs.com/zyj649261718/p/6270162.html

你可能感兴趣的文章
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
数据库插入数据乱码问题
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>