我来更新了,哈哈。。。没有人看呢。自己给自己点了一个赞之后又取消了,哈哈。接下来开始正题
工厂方法:
可以说工厂方法是简单工厂的升级版,就是我的列子一样,如果我想加入一个看好的品牌手机,比如小米。我就需要改动我的原有代码。所以说简单工厂违背了OCP原则(开闭原则)如果你还不知道六大原则的话,你可以找些资料看下,或是找我要资料都可以的,我还有没具体去看,去学习。所以我就不引出这些东西了。
而工厂方法很好的解决了这个问题,下面看下我的demo吧,还是以昨天的那个列子来说
创建了一个华为手机品牌,哈哈感觉自己马上就是世界首付了
光有品牌还不行啊,必须得有工厂来生产啊
又创建了一个oppo手机,我膨胀了。。不屑代码了,卖手机去啦。。
还有一个品牌,其实结构都是一样的,就式一个品牌一个工厂,好像生活中也是这样的,只不过可能很多品牌都是由一个代工工厂生产的,列如富士康。。那就不写那个品牌了,下面看一下测试的结果吧
不知道各位小伙伴对这个工厂方法是怎么理解的,其实我个人觉得就是针对一个每一个品牌都需要一个独立的工厂,这样如果有新牌子的品牌的话,我只是再去增加这个品牌的手机跟工厂,两个类就做到了OCP但是它也有自身的缺陷,你有没有发现创建的类跟接口过多啊,这样还是比较麻烦的。
下面我们再来看看
抽象工厂:
抽象工厂就有点想代理工厂了,我把手机中的零件作为产品族,其实也就是手机中需要的零件,这样的话就可以不用像工厂方法那样,有多少个品牌就要创建多少个工厂了,我只需要根据零件去创建工厂然后把他们组装都一起,就成了一个手机。然后再贴上各自的品牌,就可以卖了。
CPU零件必不可少,我分别创建了高低端两种CPU
还有像素,其实也就是相机啦。不要太在意细节哈。也是高低端两种
手机工厂肯定避免不了的
还有两个高低端的手机工厂
接下来看看测试的结果吧
由于代码非常的简单,所以我也没有添加注释。下面再来说一下我对抽象工厂的理解吧,我个人觉得抽象工厂比较复杂,但是它对产品族添加来说是可以满足的,也满足了OCP原则。但是对添加单个产品的话就显得有些鸡肋了。
不知道你是怎么理解的呢?请留下你的想法