设计模式之:工厂模式

    xiaoxiao2021-03-25  148

    1.简单工厂模式 1.1编码时不能确定使用哪一种类实例。 比如说我要生产产品,现在有两种产品A和B,在写程序时,不确定到底要生产哪种产品,有可能是A,也有可能是B。那么我要怎样 使用统一的接口来分别产生A和B两种实例呢? 所以在创建工厂类时,需要对产品的类型进行选择。 在程序中如下实现:

    public class ProductCreator { public Product createProduct(String type) { if("A".equals(type)){ return new ProductA(); } else if("B".equals(type)){ return new ProductB(); } else return null; } }

    然而这两个产品是有共性的。比如说都有价格名称等属性。所以我们需要一个接口来实现他们之间的共同属性。

    public interface Product{ public void getName(); }

    先考虑共性然后考虑不同。所以要分别产生两个类来实现这个共同的接口。

    public class ProductA inplements Product { public void getName() { cout << "i am A" << endl; } } public class ProductB inplements Product { public void getName() { cout << "i am B" << endl; } }

    以上便是简单工程模式的实现方式。 在main函数中,只需实例化一个工厂,然后在工厂中输入参数就搞定了。 ProductCreator creator = new ProductCreator(); Product A = creator.creatorProduct(“A”); A.getName();

    1.2一个类使用他的子类来创建对象

    如果把接口看成是一个抽象类的化,那么两个产品类,便是他的子类。这便是利用子类来创建对象,使用工厂模式的好处是,用一个统一的类,工厂类,来将这些子类以输入参数的方式创建对象。

    1.3开发人员不希望创建了哪个类的实例以及如何创建实例的信息暴露给外部程序。

    2.抽象工厂模式

    但现在我连生产那种产品都不能确定了,于是便有了抽象工厂类。一个抽象工厂类是建立在多个具体工厂类之上的。

    每一个具体工厂类,依循简单工厂类的创建方式。

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

    最新回复(0)