工厂模式
工厂模式
简单工厂模式
- 简单工厂模式的优点:将对象的创建交给专门的工厂类负责,实现了对象的创建和对象的使用分离。
- 简单工厂模式的缺点:工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,需要增加一个 if 判断分支才能支持。而且当产品类型较多时,简单工厂的 if 判断将会非常多,不容易维护。
工厂类代码:
一切准备就绪,女娲就可以开始造人了:
工厂方法模式
定义一个用于创建对象的接口或抽象类,让子类决定实例化哪一个类。
- 工厂方法模式的优点:遵循了开闭原则,扩展性极强。比如现在要增加一个绿皮肤的人类,我们只需要增加一个创建绿皮肤人类的工厂,这个工厂继承自抽象工厂即可,不需要改变原有代码,可维护性高。
- 工厂方法模式的缺点:增加了类的数量,当有成千上万个类型的产品时,就需要有成千上万个工厂类来生产这些产品。
其中,Human接口及其子类的代码不变,增加了一个抽象工厂AbstractHumanFactory,里面定义了一个造人的方法 createHuman(),具体创造什么类型的人由其子工厂实现。
抽象工厂类及其子工厂类如下:
女娲造人的方式如下:
抽象工厂模式
- 抽象工厂模式的优点:增加固定类型产品的不同具体工厂比较方便。例如现在女娲要创造一个绿皮肤的人,只需要再创建一个绿皮肤人的工厂继承抽象工厂就可以了。
- 抽象工厂模式的缺点:类图优点复杂,可读性没有工厂方法模式那么好。
抽象工厂我们定义了两个方法,createMan() 和 createWoman()用来表示生产男人和女人,不管男人或女人,都有不同的肤色,所以我们定义了三个子工厂用来创建不同肤色的人(包括男人和女人),这三个子工厂重写了父类工厂的两个方法。具体实现代码如下。
Human接口及其两个实现类:
三种肤色的男人和女人:
抽象工厂代码:
具体工厂代码:
女娲使用工厂创造人类:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现