旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

有关C#工场形式简朴解说【C#.Net教程】,csharp,.net,讲解

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:28评论:0


导读:一、简朴工场(SimpleFactory)形式SimpleFactory形式依据供应给它的数据,返回几个能够类中的一个类的实例。一般它返回的类都有一个大众的父类和大众的要...
一、 简朴工场(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");
   }
}
 
public class TubeLight : Light
{
   public override void TurnOn()
    {
      Console.WriteLine("Tube Light is Turned on");
   }
 
   public override void TurnOff()
    {
      Console.WriteLine("Tube Light is Turned off");
   }
}
 
public class LightSimpleFactory
{
   public Light Create(string LightType)
    {
      if(LightType == "Bulb")
         return new BulbLight();
      else if(LightType == "Tube")
         return new TubeLight();
      else
         return null;
   }
}
 
public class Client
{
   public static void Main()
    {
      LightSimpleFactory lsf = new LightSimpleFactory();
 
      Light l = lsf.Create("Bulb");
      l.TurnOn();
      l.TurnOff();
 
      Console.WriteLine("-----------------");
 
      l = lsf.Create("Tube");
      l.TurnOn();
      l.TurnOff();
   }
}

五、 长处与瑕玷:
长处:
工场类含有必要的推断逻辑,能够决定在什么时候建立哪个产物类的实例,客户端能够免去直接建立产物对象的义务,而仅仅"消耗"产物。简朴工场形式经由过程这类做法完成了对义务的支解。
瑕玷:
当产物有庞杂的多层品级构造时,工场类只要本身,以不变应万变,就是形式的瑕玷。由于工场类集中了一切产物建立逻辑,一旦不能一般事情,全部体系都要受到影响。
同时,体系扩大难题,一旦增加新产物就不得不修正工场逻辑,有能够构成工场逻辑过于庞杂。
别的,简朴工场形式一般运用静态工场要领,这使得没法由子类继续,构成工场角色没法构成基于继续的品级构造。

以上就是有关C#工场形式简朴解说的细致内容,更多请关注ki4网别的相干文章!

标签:csharp.net讲解


欢迎 发表评论: