简单工厂模式(Simple Factory Method Pattern)

xiaoxiao2021-02-28  93

图示原理 【注释】从图中可以看出,客户是与工厂打交道的,指示工厂生产某类产品,然后工厂生产出产品,客户统一以父类产品类对象的形式得到,从而使客户与具体产品的创建毫不相关。 各类解释 工厂类:担任这个角色的是工厂方法模式的核心。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。 抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。 具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。 范例

namespace ConsoleApplicationDemo { public interface IApparel { string ShowMe(); } public class ApparelFactory { public IApparel CreateApparel(string apptype) { switch (apptype) { case "DRESSSHIRT": return new DressShirt(); case "SPORTSSHIRT": return new SportShirt(); } return null; } } public class DressShirt : IApparel { public string ShowMe() { return ("Dress Shirt"); } } public class SportShirt : IApparel { public string ShowMe() { return ("Sports Shirt"); } } class Program { static void Main(string[] args) { //生成工厂对象 ApparelFactory factory = new ApparelFactory(); //客户直接给工厂指示,生成想要的产品,以统一的父类产品形式提取 IApparel obj1 = factory.CreateApparel("DRESSSHIRT"); IApparel obj2 = factory.CreateApparel("SPORTSSHIRT"); string shirtType = obj1.ShowMe(); Console.WriteLine(shirtType); } } }

效果图 简单工厂模式的优缺点 优点:        1.模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。        2.客户只需指示工厂创建哪个对象。 缺点:        1.由于工厂类集中了所有产品创建逻辑,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。 总之,就是关键部分的代码最好不轻易随需求产生变更,而简单工厂模式并没有做到这一点,所以抽象工厂模式(Abstract Factory Method Pattern)产生了-^^-。

转载请注明原文地址: https://www.6miu.com/read-51999.html

最新回复(0)