美文网首页
工厂方法模式”与抽象工厂模式

工厂方法模式”与抽象工厂模式

作者: 落雨松 | 来源:发表于2019-01-18 16:38 被阅读0次

相较于“简单工厂模式”,“工厂方法模式”是将实例化对象的操作延迟到了子类去实现,而前者是另起一个类去实现。

三、工厂方法

一个小demo理解工厂方法:

①产品(某一类型):
定义产品的接口

public interface Product {}

具有相同类型的一些相应产品

//产品1
public class ConcreteProduct1 implements Product {}
//产品2
public class ConcreteProduct2 implements Product {}

②工厂
总工厂(该工厂主要为上面类型的产品服务):

public abstract class Creator {
    abstract Product factoryMethod();
}

分工厂(客户主要使用的工厂,当前主要负责生产产品1)

  public class ConcreteCreator extends Creator {
    Product factoryMethod() {
        return new ConcreteProduct1();
    }
}

③客户(或者说是其他地方需要上面类型的产品,就需要从分工厂获取)

public class Client {
    public static void main(String[] args) {
        //我想要产品1,从产品1的分工厂去拿产品
        Creator product1 = new ConcreteCreator();
        System.out.println(product1.factoryMethod());
    }
}

番外:
个人理解:
“简单工厂模式” 下的对客户端实例化对象的选择交给了简单工厂,在客户端无需去进行逻辑判断,但是这种模式下,简单工厂是通过修改逻辑判断代码来实现的,在这种情况下,业务越来越多,代码改的越来越频繁,很容易出错,当然其简单工厂又是可见的,所以不符合“开闭原则”。工厂方法相当于简单工厂的一个升级版,工厂方法是符合开闭原则的。

而在“工厂方法模式”中,当新增加一个产品,以前的产品依然可以正常的使用,除非不要这个产品,那么就需要取消掉相应产品和相应的实现工厂方法的类,以及客户端对这个产品的使用的那些类。当然对于新增产品的话,只需要新增实现工厂方法的类就可以。客户端调用这个实现工厂方法的类,即可进行相应的业务。减少耦合。

当然这样一来,也有诟病,那就是如果业务不断升级,不断有产品新增,那么实现工厂方法的类也就越来越多。

四、抽象工厂模式

对于抽象工厂模式,其实就是多个实现工厂方法的类合在一起的模式,从上面的例子中,也就是说:

几个不同分工厂合在一起:

public class ConcreteCreator extends Creator {
    Product factoryMethod1() {
        return new ConcreteProduct1();
    }
    Product factoryMethod2(){
        return new ConcreteProduct2();
    }
}

当然他们的总工厂要“允许它们合在一起”:

public abstract class Creator {
    abstract Product factoryMethod1();
    abstract Product factoryMethod2();
}

这只是一个简单的抽象工厂,真正的抽象工厂设计模式,可以构成一个家族树。这也类似于大企业。

相关文章

  • 抽象工厂模式(选择产品簇)

    目录 回顾众多工厂模式 抽象工厂模式的理念 抽象工厂模式与工厂方法模式的差异 怎么来实现抽象工厂模式 抽象工厂模式...

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式[3]-抽象工厂模式-Abstract Factory

    1.抽象工厂模式介绍 抽象工厂模式是创建型设计模式,可以创建一组对象。与工厂方法模式相比,抽象工厂模式中的具体工厂...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式(工厂模式)

    工厂方法模式 抽象工厂模式

  • 设计模式系列-抽象工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 抽象工厂模式 抽象工厂模式 定义 抽象工...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

网友评论

      本文标题:工厂方法模式”与抽象工厂模式

      本文链接:https://www.haomeiwen.com/subject/aeyndqtx.html