设计模式_抽象工厂模式
看个例子:宝马工厂可以生产宝马七个系列,并且都有大小型之分?
定义汽车行为接口【ICar】,定义方法【startEngine】,定义方法【carSize】。
定义宝马抽象类【AbstractBaoMaCar】实现接口,并实现【startEngine】方法。
定义小型宝马类【SmallBaoMaCar1x】【SmallBaoMaCar2x】,【BigBaoMaCar1x】【BigBaoMaCar2x】继承宝马抽象类,实现【carSize】方法。
略。
定义汽车行为接口【ICarFactory】,定义方法【createBaoCar】。
定义抽象汽车工厂类【AbstractCarFactory】,定义汽车生产方法【makeCars】。
定义宝马汽车工厂【SmallBaoMaFactory】【BigBaoMaFactory】,继承【AbstractCarFactory】,可以分别生产大小宝马的不同系列。
测试结果:
总结:我们来归纳一下
简单工厂:它是一个具体的类,非接口抽象类。有一个重要的create()方法,利用if或者switch创建产品并返回(比较简单就不赘述了)。
工厂方法模式和抽象工厂模式的区别:工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则是针对的多个产品等级结构,如造车,只针对汽车牌子那么工厂方法模式就能实现。但是如果有不同的汽车牌子,每个牌子下有不同型号,每个型号下有不同配置,很显然,工厂方法模式不太适用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix