java工厂方法product,Java 之 工厂方法模式

定义

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

类图

1dbbbcafcc739c29294f17947f19bd80.png

角色

1. 抽象工厂 Creator:这是工厂方法的核心,在实际的系统中这个角色也常常使用抽象类实现

2. 具体工厂 Concrete Creator:

3. 抽象产品 Product

4. 具体产品 ConcreteProduct

示例:简单工厂到工厂方法的演变

简单工厂:

//抽象产品

interface Product{}

//具体产品

class ProductA implements Product{}

class ProductB implements Product{}

//产品工厂(下一步就是它的进化,就变成了工厂方法模式)

public class ProductFactory {

private ProductFactory(){}

public static Product getProduct(String productName){

if (productName.equals("A")) {

return new ProductA();

}else if (productName.equals("B")) {

return new ProductB();

}else {

return null;

}

}

}

工厂方法:

//抽象产品

interface Product{}

//具体产品

class ProductA implements Product{}

class ProductB implements Product{}

//将简单工厂中的工厂给抽象成接口

interface Factory{

Product getProduct();

}

//具体的工厂A,创造产品A

class FactoryA implements Factory{

public Product getProduct() {

return new ProductA();

}

}

//具体的工厂B,创造产品B

class FactoryB implements Factory{

public Product getProduct() {

return new ProductB();

}

}

可以看到,产品部分并没有变化,只是将简单工厂中的工厂类抽象成接口,并给相应产品添加相应的工厂类,就进化成了工厂方法模式。

JDBC的API 与 Collection的ArrayList和HashSet也是工厂方法的一种应用,详见转载连接,真正做项目的过程当中很少用到工厂方法模式,这个模式更多的是帮助我们理解现有的开源项目,就像现在,你是不是对JDBC的大体框架有了一定认识了呢,如果你不知道这个模式,可能看源码会觉得一头雾水呢。

规则只是用来指导你的,不是用来限制你的,只要设计合理,你的设计就是规则!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值