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网别的相干文章!