工厂模式理解
工厂的作用就是生产实例,但其与构造函数不同。工厂是用来生产多种类型实例的。例如,麦当劳可以生产汉堡,薯条和可乐,再例如,美的可以生产冰箱,洗衣机,和空调等。工厂生产的产品必须要用相关性,属于一个产品族或者属于多个相近的产品族。
工厂模式分为三种,分别是
1. 简单工厂,通过switch语句根据产品标识生产不同类型的产品,直接调用各种产品的构造函数
2. 工厂,对简单工厂的优化,将工厂进行抽象,新增产品只需增加指定工厂和产品,不需要修改单一工厂的switch语句,不会影响其他产品
3. 抽象工厂,比工厂模式多的就是,可以生产多个产品族,就是一个工厂可以同时生产多个产品,而普通工厂只能生产一个产品
(ES6)代码实现如下:
1.简单工厂
class SimpleFactory{ constructor(prodNo) //构造工厂时告知工厂产品标识 { this.prodNo = prodNo; } GetProduct() { switch (this.prodNo) //根据产品标识生产产品 { default: return new ProductA(); case 1: return new ProductA(); case 2: return new ProductB(); } } } //产品接口 class IProduct { //产品方法 //...... } //产品A class ProductA extends IProduct { //产品属性 //...... } //产品B class ProductB extends IProduct { //产品属性 //...... }
2.工厂模式
class IFactory //工厂接口 { GetProduct(){ } } //A工厂类 class FactoryA extends IFactory { constructor() { this.productA = new ProductA(); } //A工厂生产A产品 GetProduct() { return this.productA; } } //B工厂类 class FactoryB extends IFactory { constructor() { this.productB = new ProductB(); } //B工厂生产B产品 GetProduct() { return this.productB; } } //产品接口 class IProduct { //产品方法 //...... } //产品A class ProductA extends IProduct { //产品属性 //...... } //产品B class ProductB extends IProduct { //产品属性 //...... }
3.抽象工厂
//工厂接口,即抽象工厂 class IFactory { CreateFridge(); CreateAirCondition(); } //三星的工厂,生产三星的产品族 class SamsungFactory extends IFactory { CreateAirCondition() { return new SamsungAirCondition(); //三星的工厂生产三星的空调 } CreateFridge() { return new SamsungFridge(); //三星的工厂生产三星的冰箱 } } //格力的工厂,生产格力的产品族 class GreeFactry extends IFactory { CreateAirCondition() { return new GreeAirCondition(); //格力的工厂生产格力的空调 } CreateFridge() { return new GreeFridge(); //格力的工厂生产格力的冰箱 } } //冰箱产品接口 class IFridge { //冰箱产品接口 //冰箱的action } //空调接口 class IAirCondition { //空调产品接口 //空调的action } //三星的冰箱 class SamsungFridge extends IFridge { //三星冰箱的action和property } //格力的冰箱 class GreeFridge extends IFridge { //格力冰箱的action和property } //三星的空调 class SamsungAirCondition extends IAirCondition { //三星空调的action和property } //格力的空调 class GreeAirCondition extends IAirCondition { //格力空调的action和property }
参考:http://blog.jobbole.com/109594/
标签:
设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具