当前位置: 首页 > news >正文

软件工程学习日志2025.10.9

📝 今日学习主题

简单工厂模式(Simple Factory Pattern) 在实际场景中的应用

🎯 模式理解

简单工厂模式属于创建型模式,它提供了一个统一的接口来创建不同类型的对象,而无需向客户端暴露实例化的逻辑。

核心思想

• 封装变化:将对象创建的过程封装起来

• 解耦:客户端与具体产品类解耦

• 单一职责:工厂类专注于对象创建

💻 代码实践回顾

类结构设计

// 抽象产品类
public abstract class Person {
public abstract void display();
}

// 具体产品类
public class Man extends Person { /* 实现略 / }
public class Woman extends Person { /
实现略 / }
public class Robot extends Person { /
实现略 */ }

// 工厂类
public class Nvwa {
public static Person createPerson(String type) {
// 根据类型创建具体对象
}
}

🔍 模式优势分析

  1. 降低耦合度

客户端只需要知道产品类型标识符,无需关心具体创建细节:
// 客户端代码简洁清晰
Person person = Nvwa.createPerson("M");
person.display();

  1. 易于扩展

新增产品类型时,只需要:
• 添加新的产品类

• 修改工厂类的创建逻辑

• 客户端代码无需改动

  1. 集中化管理

所有对象的创建逻辑集中在工厂类中,便于统一管理和维护。

⚠️ 局限性思考

存在的问题

  1. 违反开闭原则:新增产品类型需要修改工厂类
  2. 工厂类职责过重:所有产品创建逻辑集中在一个类中
  3. 类型判断复杂:产品类型增多时,switch/case或if/else会变得冗长

🚀 改进方向

方案1:使用反射机制

public class Nvwa {
public static Person createPerson(String type) {
try {
Class<?> clazz = Class.forName("com.example." + getClassName(type));
return (Person) clazz.newInstance();
} catch (Exception e) {
throw new IllegalArgumentException("无效类型");
}
}
}

方案2:配置化工厂

// 通过配置文件映射类型与类名
@Configuration
public class PersonConfig {
@Bean
public Map<String, Class<? extends Person>> personMap() {
Map<String, Class<? extends Person>> map = new HashMap<>();
map.put("M", Man.class);
map.put("W", Woman.class);
map.put("R", Robot.class);
return map;
}
}

💡 实际应用场景

适合使用简单工厂模式的场景:

  1. 对象创建逻辑相对简单
  2. 产品类型数量有限
  3. 不需要频繁扩展新产品
  4. 客户端不关心创建细节

实际项目中的类似应用:

• 数据库连接工厂(MySQL、Oracle、SQL Server)

• 日志记录器工厂(FileLogger、ConsoleLogger)

• 文档解析器工厂(PDFParser、WordParser)

📊 学习收获总结

方面 收获

设计原则 加深了对封装变化、单一职责原则的理解

编码规范 实践了清晰的类分层和命名规范

模式认知 明确了简单工厂模式的适用边界

扩展思考 认识到模式局限性及改进方向

http://www.sczhlp.com/news/179982/

相关文章:

  • 供应链优化技术助力应对疫情挑战
  • 搜索关键词 - 呓语
  • 阅读《构建之法》产生的问题
  • 一级a做爰片免费的网站有吗百度联盟广告点击一次收益
  • 做介绍美食网站的菜单的wordpress简题
  • 武安市城乡建设局网站电商推广
  • 社区网站建设工作职责wordpress js代码放哪
  • 建设厅网站的秘钥怎么买连云港建设局电力网站
  • 企业网站源码进一品资源网网站怎么做文件下载
  • 抓好门户网站建设信用门户网站建设规范
  • 网页设计与网站建设课后习题答案wordpress related
  • 淘客手机端网站建设做家教网站赚钱么
  • 仿牌网站安全推广普通话的故事
  • 网站建设硬件需求视频推广计划
  • 建设环境竣工验收网站企业自建站
  • 校园网站建设必要性网站谁做的比较好看的
  • 手机商城网站建设拉新接单网
  • 网站排名seo培训久久建设集团有限公司
  • 中山网站建设文化效果嘉兴服饰网站建设
  • 平面设计可以做网站wordpress 获取用户名
  • 网站备案需要资料flash属于网页制作平台吗
  • 巴南市政建设网站成年男女做羞羞视频网站
  • discuz网站名称舟山网站设计
  • 环球资源网的优势珠海做网站优化
  • 长沙网站开发培训建设网站如何索要素材
  • 天津深圳网站开发定制小说一键生成动漫
  • 做一个网站可以卖东西嘛兰州道路建设情况网站
  • 骄傲 孔雀羽翎上的暗槽 从最肮脏裂缝开凿 被爱意和现实击倒 停止创造
  • 10.9 CSP-S模拟28 改题记录
  • 所以相信我初登场 不会让任何人失望 无论地位不管成败 全都逃不出神的覆掌