C#设计模式工厂模式

更新时间:2023-06-20 11:56:43 阅读: 评论:0

C#设计模式(4)-Simple Factory Pattern
工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:
简单工厂(Simple Factory)模式
工厂方法(Factory Method)模式
抽象工厂(Abstract Factory)模式
 
一、 简单工厂(Simple Factory)模式
Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。
Simple Factory模式实际上不是GoF 23个设计模式中的一员。
二、 Simple Factory模式角色与结构:


初中英文作文工厂类角色Creator (LightSimpleFactory)工厂类在客户端的直接控制下(Create方法)创建产品对象。

抽象产品角色Product (Light)定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象类或接口。

具体产品角色ConcreteProduct (BulbLight, TubeLight)定义工厂具体加工出的对象。
三、 程序举例:
using System;

public abstract class Light
{
   public abstract void TurnOn();
   public abstract void TurnOff();
}

public class BulbLight : Light
{
   public override void TurnOn()
   {
      Console.WriteLine("Bulb Light is Turned on");
   }

   public override void TurnOff()
   {
      Console.WriteLine("Bulb Light is Turned off");
2020江苏高考英语   }
}

public class TubeLight : Light
{
   public override void TurnOn()
   {
      Console.WriteLine("Tube Light is Turned on");
   }

英语4级多少分过   public override void TurnOff()
   {
      Console.WriteLine("Tube Light is Turned off");
   }
}

public情景对话 class LightSimpleFactory
ieits{
   public Light Create(string LightType)
   {
      if(LightType == "Bulb")
thismorning         return new BulbLight();
      el if(LightType == "Tube")
         return takeafternew TubeLight();
      el
         return null;
   }
}

public class Client
gourmet{
   public static void Main()
   {
      LightSimpleFactory lsf = new LightSimpleFactory();

      Light l = lsf.Create("Bulb");
      l.TurnOn();
come up      l.TurnOff();

      Console.WriteLine("-----------------");

      l = lsf.Create("Tube");
      l.TurnOn();
      l.TurnOff();
   }
supp}

本文发布于:2023-06-20 11:56:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/151464.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:工厂   模式   对象   创建   实例
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图