博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽象工厂模式(Absraact Factory)介绍与实现
阅读量:5955 次
发布时间:2019-06-19

本文共 1608 字,大约阅读时间需要 5 分钟。

创建一个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

你可能感兴趣的文章
[转]Newtonsoft.Json高级用法
查看>>
35个Java代码性能优化总结
查看>>
Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
查看>>
DFI、DPI技术
查看>>
hibernate 执行存储过程 方法
查看>>
RapidIOIP核的验证方法研究_王玉欢
查看>>
崩溃日志的实例
查看>>
base64是啥原理
查看>>
字符串中去除连续相同的字符保留一个
查看>>
实战 Windows Server 2012 群集共享卷
查看>>
CSS 元素超出部分滚动, 并隐藏滚动条
查看>>
React中那些纠结你的地方(一)
查看>>
Docker入门安装教程
查看>>
PhoneGap极光推送 cordova消息推送
查看>>
Subarray Sum Equals K
查看>>
preventDefault, stopPropagation, stopImmediatePropagation 三者的区别
查看>>
算法题解:找出包含给定字符的最小窗口(枚举的一般方法)
查看>>
超级账本HyperLedger初体验
查看>>
完美解决html中select的option不能隐藏的问题。
查看>>
推荐5大开源工具,用于开发Kubernetes项目
查看>>