设计模式-工厂方法

设计模式-工厂方法设计模式

工厂方法(Factory Method)

定义了一个创建对象的接口,但由子类决定要实例化哪个类。
工厂方法把实例化操作推迟到子类。

工厂方法类图

简单工厂中,创建对象的另一个类,在工厂方法中,是由子类来创建对象。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDmxxBZy-1604724627482)(https://imgkr2.cn-bj.ufileos.com/5a6ea5e2-6134-49ac-a936-8d783e243b03.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9iRM3kwPWd54WcqJ%252F2sFgzKpU%252Bk%253D&Expires=1604808452)]

主要角色

  • 抽象工厂角色:这个工厂方法模式的核心,它与应用程序无关,是具体工厂角色必须实现的接口或者必须继承的父类。
  • 具体工厂角色: 含有和具体业务逻辑有关代码,由应用程序调用以创建具体产品的对象。
  • 抽象产品角色:它是具体产品继承的父类或者是实现的接口。
  • 具体产品角色: 具体工厂角色所创建的对象就是此角色的实例。

代码

Factory 抽象工厂方法类

public abstract class Factory {
    abstract public Product factoryMethod();
    public void doSomething() {
        Product product = factoryMethod();
        // do something with the product
    }
}

具体实现类:

public class ConcreteFactory extends Factory {
    public Product factoryMethod() {
        return new ConcreteProduct();
    }
}

具体实现类1:

public class ConcreteFactory1 extends Factory {
    public Product factoryMethod() {
        return new ConcreteProduct1();
    }
}

具体实现类2:

public class ConcreteFactory2 extends Factory {
    public Product factoryMethod() {
        return new ConcreteProduct2();
    }
}

适用场景

如果只有一个类,直接 new 就可以,如果有多个类,而且这些类还需要针对不同的情况来创建哪个对象,这时候需要工厂。将调用方和具体的目标进行解耦,调用方根本就不知道要创建哪个对象。只是提出条件,然后工厂可以给定的条件来决定创建哪个对象。

Java 中有哪些使用了 工厂方法模式
欢迎关注公众号:程序员开发者社区

在这里插入图片描述

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 19.89元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值