抽象工厂模式(Absraact Factory)介绍与实现

本文详细介绍了工厂模式的设计与应用,包括定义了IProduct接口作为产品接口,StandardFactory作为工厂接口,具体工厂ProductFactoryA与ProductFactoryB实现产品创建逻辑,并通过抽象工厂ProductFactory根据不同的输入返回相应的具体工厂实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建一个IProduct,后面模拟业务时要用到

package com.xiawei.factory;

public class IProduct {

private String productNo = "";
}

=====================================================

package com.xiawei.factory;
/**
* 规范工厂接口 </p>
*/
//创建一个所有工厂的规范接口,后面所有的工厂类都要来实现这个接口,并且要实现其方法.
//这样只需向用户提供这个工厂接口就行.
public interface StandardFactory {

public IProduct createProduct(String productNo);
}

======================================================

package com.xiawei.factory;

//定义具体工厂A类

public class ProductFactoryA implements StandardFactory{

@Override
public IProduct createProduct(String productNo) {
//模拟工厂1生成产品对象规则
IProduct product = new IProduct();
return product;
}

}

======================================================

package com.xiawei.factory;

//定义具体工厂B类

public class ProductFactoryB implements StandardFactory{

@Override
public IProduct createProduct(String productNo) {
//模拟工厂B生它的产品对象规则
IProduct product = new IProduct();
return product;
}

}

=================================================

package com.xiawei.factory;
//其实所谓抽象工厂,就是在普通工厂类外面套上了一层可选择的工厂类
//在这之前给他们规定一个统一的接口,然后让所有的工厂类都出实现它
//并实现它的接方法
/**
* 创建抽象工厂类 </p>
* 这个工厂类不具体指定返回的工厂对象,条件满足那个就返回那个对象
*/
public class ProductFactory implements StandardFactory{

@Override
public IProduct createProduct(String productNo) {
//获取产品编号
char chr = productNo.charAt(0);
//定义一个规范工厂类型的变量
StandardFactory factory = null;
//提供产品编号,判断需要获取那个具体工厂对象
if(chr == '1'){
factory = new ProductFactoryA();
}else if(chr == '2'){
factory = new ProductFactoryB();
}

if(factory != null){
return factory.createProduct(productNo);
}
return null;
}

}

转载于:https://www.cnblogs.com/xiaweicn/p/8684161.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值