工厂方法模式(Factory Method Pattern)

    xiaoxiao2023-10-29  174

    水果店开业在即,小明需要去进货,考虑到水果的种类和成本问题决定先去探访一下货源和价格,小明发现苹果在A商那边便宜2毛,西瓜在Z商那边便宜3毛,榴莲在C商那边便宜4毛。这里每一个商贩是一个工厂,每个工厂提供不同的水果,下面我们来介绍工厂方法模式

    工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,但是让子类决定哪一个类实例化,工厂方法模式让一个类的实例化延迟到其子类。

    工厂方法模式是一个创建型模式,下面我们来看看他的结构图:

    工厂方法的实现:

    Product(抽象产品):定义产品的接口,是所有产品对象的公共父类

    interface Product { void TestMethod(); }

    Concrete Product(具体产品):实现抽象产品的具体产品

    class ConcreteProduct : Product { public void TestMethod() { Console.WriteLine("Hello World!"); } }

    Factory(抽象工厂):定义工厂的接口,它是工厂方法的核心所有的工厂都必须实现抽象工厂,并且返回产品

    interface Factory { Product FactoryMethod(); }

    Concrete Factory(具体工厂):实现抽象工厂的具体工厂

    class ConcreteFactory : Factory { public Product FactoryMethod() { return new ConcreteProduct(); } }

    具体调用实现:

    Factory factory = new ConcreteFactory(); Product product = factory.FactoryMethod(); product.TestMethod();

    工厂方法的优点:

    1.工厂方法用来创建客户所需的产品,同时还向客户隐藏了具体产品实例化的细节

    2.扩展性好符合开闭原则,新增一个具体产品或者具体工厂无需修改代码,只需要添加到工厂即可

    工厂方法的缺点:

    1.每添加一种产品需要提供对应的工厂类,系统中的类成对增加,系统在编译的时候会增加额外的开销

    2.增加了系统的抽象性和理解难度

    适用环境

    1.客户端不知道它所需的对象的类

    2.抽象工厂类通过其子类制定创建哪个对象

     

     

    最新回复(0)