设计模式(三)抽象工厂,不属于23中设计模式
抽象工厂
直接上图,为什么说是抽象工厂,在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。也就是说,不用知道他怎么构建这个实力的。
如上图:
一个产品族,例如美的,海尔,格力,这三个品牌 这就是三个产品族,例如说美的 美的下面产洗衣机(正方形),电冰箱(圆形),空调(椭圆形) 这是一个产品族,然后产品的等级结构,那就是说这个空调是3匹的还是1.5匹的,还是1匹的等等 虽然很抽象,但是很现实
接下来代码实现:
代码的UML图,课程工厂接口,由不同的工厂去实现 进行创建不同的课程,与笔记,这样的话代码,比较好理解,具体的代码就不粘贴了,因为从java工厂中获取的肯定是java的课程,和java的笔记,只要从某个工厂取,肯定属于java的视频,解耦达到了,也是开闭原则,某些原则,在某些场景是符合的
缺点: 如果需求来了说,我要新增一个源码功能 这些都有,但是开闭原则就失效了,还是改源码,今天加个东西,明天加个东西,如果长时间不修改可以使用抽象工厂模式,如果经常修改,就不能使用抽象工厂模式,工厂方法是关注等级结构,抽象工厂关注产品族
还没有评论,来说两句吧...