设计模式-工厂模式(手工作坊到工业化的转变 c#实现)

 

自己CSDN blog 上回收来的,以后都集中到这里了。

 

      还是以快餐店做例子,简单工厂模式相当于家庭作坊,随着社会的进步,分工变细,所有快餐不再是一个师父包办,而是出现了面点师,米饭师(呵呵,不知道有没有这个,反正大家明白就行),面包师分别负责专门的食物制作。这就是工厂模式,请看下面的例子:

 

 

using System;

namespace FactoryPattern
{
 /// <summary>
 /// 工厂模式示例
 /// </summary>
 class FactoryPattern
 {
  public static Chef nChef,rChef,bChef;
  public static Food noodle,rice,bread;
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {

        //调用示例
       nChef=new NoodlChef();
       nChef.MakeFood();
       rChef=new RiceChef();
       rChef.MakeFood();
       bChef=new BreadChef();
       bChef.MakeFood();

       Console.ReadLine();
  }
 }
 class BadFoodException: System.Exception
 {
      public BadFoodException(string strMsg)
      {
           Console.WriteLine(strMsg);
      }
 }

//定义各种快餐
 public interface Food
 {
      //烹饪
      void Cook();
      //卖出
      void Sell();

 }
 public class Noodle:Food
 {
      public  Noodle()
      {
           Console.WriteLine("\nThe Noodle is made..");
      }
      private int price;
      public void Cook()
      {
           Console.WriteLine("\nNoodle is cooking...");
      }
      public void Sell()
      {
           Console.WriteLine("\nNoodle has been sold...");
      }
      public int Price
      {
           get{return this.price;}
           set{price=value;}
      }
 }
 public class Rice:Food
 {
      public Rice()
      {
           Console.WriteLine("\nThe Rice is made ..");
      }
          private int price;
      public void Cook()
      {
           Console.WriteLine("\nRice is cooking...");
      }
      public void Sell()
      {
           Console.WriteLine("\nRice has been sold...");
      }
      public int Price
      {
           get{return this.price;}
           set{price=value;}
      }
 }
 public class Bread:Food
 {
      public Bread()
      {
           Console.WriteLine("\nThe Bread is made....");
      }
      private int price;
      public void Cook()
      {
           Console.WriteLine("\nBread is cooking...");
      }
      public void Sell()
      {
           Console.WriteLine("\nBread has been sold...");
      }
      public int Price
      {
           get{return this.price;}
           set{price=value;}
      }
 }

//定义厨师接口,并分别定义面条师,米饭师,面包师

 public interface Chef
 {

       //做饭
      Food MakeFood();
 }
 

//面条师负责制作面条
 class NoodlChef:Chef
 {
      public Food MakeFood()
          {
               return new Noodle();
          }
     }

 //米饭师负责米饭
 class RiceChef:Chef
 {
      public Food MakeFood()
      {
           return new Rice();
      }
 }

 //面包师负责做面包
 class BreadChef:Chef
 {
      public Food MakeFood()
      {
           return new Bread();
      }
 }

}
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c#工业自动化通信开发库,工业自动软件必备的基本程序。包括串口通信,TCP客户端,tcp服务器端,高并发物联网接收服务器端,udp通信,can总线通信,profinet,modbus tcp/rtu/dtu等,各大品牌plc通信,opc ua,opc da,http通信,mysql常规库,ef6+mysql,ef6+sqlite,firebird数据库,ini配置文件操作,excel表格操作(包括模版化导出),rabbitmq消息队列管理库,Rabiitmq消息队列操作库,常用的数据转换(高低字节排序,转换,取位设位,校验和等),功能可拆分。不懂的,不明白的,包教会。做项目的做服务的,包能用。拥有技术公共群共同探讨技术难题,使用技巧和问题,详细的使用说明文档。 update 2021.7.26----优化消息队列出队缓存,读取更快捷更稳定。 update 2021.7.26----新增加rabbitmq消息队列管理类,可以嵌入到用户界面中管理rabbitmq服务器 update 2021.8.3---新增应用于物联网及mes系统中远程读取modbus rtu协议。 update 2021.8.10---新增加ef6+mssql数据库功能,实现自动创建表,以及存储过程。完善及提高了efmssql,efsqlite,efmysql等安全。 update 2021.08.19---根据行业设备通信现状需要,增加通过dcom组件与opc服务器通信功能,去除原来复杂的操作过程,使用接口式更方便稳定 update-2021-08-30-----新增加dtu服务器,pc做为服务器,远程4G Dtu模块作为客户端主动连接服务器,服务器根据模块注册信息下发modbus rtu指令至远端,终端回复数据服务器自动解析。主要应用于物联网平台.mes系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值