设计模式-工厂模式和抽象工厂

工厂模式

工厂模式的类型还是比较多,相互之间有些细微的区别,不过都是用来创建新的对象了。所谓的工厂的含义就是用来生产对象的意思。使用它的好处是,我们可以将获取一个类的实例的操作封装到一个方法中。这样我们需要修改获取类的实例的逻辑的时候只要对该方法进行修改就可以了。

我们这里可以将其分成三种类型。

简单工厂模式

以上就是简单工厂,它不属于23种里的一种,简单来理解就是创建一个工厂类用来根据条件返回不同类型的实体。即使这种方式也有静态工厂和实例工厂两种区分:

publuc class MouseFactory {
    public Mouse createMouse(int i) {
        // 实际创建对象的逻辑
    }
}

以及

publuc class MouseFactory {  
    public static Mouse createMouse(int i) {
        // 实际创建对象的逻辑
    }
}

后者被称为静态工厂,它的好处在于不需要创建对象就可以直接使用静态方法来获取一个类的实例。它的缺点是不能通过继承来改变创建方法的行为。

工厂模式

工厂模式在基类中定义创建类的实例的方法,然后要求子类在定义的时候实现这些方法。以上图为例,我们在MouseFactory类中定义了创建对象的方法createMouse(),然后它有两个子类HpMouseFactoryDellMouseFactory,子类中需要实现这两个方法。在上图中两个子类的工厂分别生产不同类型的产品HpMouseDellMouse.

工厂方法将一个类的实例化延迟到了子类中,而且子类需要根据自己的工厂的性质来生产不同类型的“产品”。

抽象工厂

上面是抽象工厂的一个图示。这里的PcFactory就是一个抽象工厂,而HpFactoryDellFactory是其两个具体的实现。所谓抽象工厂不仅要实现某个类型的产品,它同时还要实现与之相连的其他产品。像在这里,一个“电脑生成工厂”不仅要实现键盘的生成,同时还要实现鼠标的生成。

抽像工厂和工厂方法的一些区别:

  1. 抽象工厂通常通过工厂方法来实现具体的工厂。在上面的案例中就是PcFactory需要子类HpFactoryDellFactory继承该类来实现两种电脑的生产工厂。

当需要创建产品的家族或想要生产相关产品的集合的时候,可以使用抽象工厂。

图片来自:DesignPattern


更多内容

1、该项目整理了设计模式、Java语法、JVM、SQL、数据结构与算法等相关内容:https://github.com/Shouheng88/Java-Programming。

2、由于时间仓促,不免于存在错误,欢迎批评指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值