设计模式之简单工厂模式
简单工厂模式
1.简单工厂模式结构图
2.示例代码:
public interface Product {
void doSomething();
}
public class ProductA implements Product{
@Override
public void doSomething() {
System.out.println("这是产品A!");
}
}
public class ProductB implements Product{
@Override
public void doSomething() {
System.out.println("这是产品B!");
}
}
public class SimpleFactory {
private int a = 1;
private int b = 2;
public Product makeProduct(int type) {
Product product = null;
if (a == type) {
product = new ProductA();
} else if (b == type) {
product = new ProductB();
}
return product;
}
public Product makeProduct(String className) {
Product product = null;
if (null != className && className.trim() != ""){
try {
product = (Product)Class.forName(className).getDeclaredConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return product;
}
public Product makeProduct(Class<? extends Product> clazz) {
Product product = null;
if (null != clazz){
try {
product = clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return product;
}
}
-
总结:
优点:结构简单,调用方便;工厂和产品的职责区分明确.
缺点:工厂类单一,若产品增多,则代码臃肿,违背高聚合原则.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探