面向对象的编程总是避免不了创建对象,更加之任何事物都可看做对象,这样子我们书写代码的时候,就会遇到各种千奇百怪的问题。需要一个合理的模式完成对象的创建。
集团、工厂、产品线。
假设工地现在需要一堆建筑材料,有长方形的墙体,原型的柱子三角形的屋顶还有些许当前未知但后期会出现的需求 这个时候可以采取 集团 工厂产品线的方式.
集团:我们当前需要的建筑材料的生产商
工厂:集团下属负责生产材料的厂家
产品线:工厂里面负责制造产品的单位
需求分析:
建筑材料: 寻找建筑厂商
材料批次: 寻找工厂
材料生产: 寻找产品线
根据这个模式,我们来试着去创建对象
第一步:开个招标会 招标,集团投标
var coMetting = new CoMetting();
参加招标会的集团有
var co_nokia='nokia';
var co_huawei='huawei';
var co_Zte ='zte';
var co_xxx='xx';
第二步:招标会竞争很激励,大集团使用浑身解数,终于有一家集团拿到了标。以后我们要建筑材料的时候就去这个集团发需求了。
var co=coMetting.getCo('huawei')
第三步:集团拿到标了,有生意了,肯定需要和工地交流看看到底需要什么样的产品,什么档次的产品,什么版本的 产品。然后交由工场去生产。
var best = ‘best’;
var secon=‘second’
var xx=‘xx’;
根据 好坏或者档次对工场命名
综合考虑选择了意见性价比较高的厂家
var factoryt = co.getFactory(second);
第四步:签了合同就该开始准备上生产线了,工厂有很多条生产线,不同生产线生产不同的东西。
选择的共产有以下 产品线:
var boxDept=‘box’;
var cylinderDept='cylinder';
var xx='xx'
var boxDept= factoryt.getDept(‘box')工地可能需要多种建筑材料
var cylinderDept =factoryt.getDept(‘cylinder')
第五步:生产
工地说我需要一个 长宽高分别为 100,100,100 的墙(是个正方体吧),这个时候向生产线发个消息告诉规格
var msg= {x:100,y:100,z:100}
然后让生产线去生产,生产线生产完了之后给他返回一个box
var box =boxDept.create(msg);
第六步:定制需要
好吧这一步是给不停改需求的产品经理设计的
产品经理说我要的墙能安装销毁(很好理解,不能安装不能拆的墙没法用)
那么产品线就要给我的box 提供一下方法
box.show()
box.destory();
有一天产品经理说:‘我要一面神奇的墙,万一遇到事故了,我的墙能飞,我就没事了”。
这个时候只需要通知生产线给墙安装两个翅膀了。
然后产品经理就可以
box.fly();
====================================
结语:
工地要一块转不一定这么麻烦
第一:我们工地有合作伙伴,那么就不要开招标会了,可以直接找合作集团。
第二: 我们工地供货稳定,一直都是由同一个厂家供货的,此时直接找厂家就ok。
第三: 我们只需要你一批转,直接找个产品线,告诉产品线生产就行。
第四: 我们工地保安缺一块砖头砸人,直接在外面找一块转就行。
本文完成:
对象是活的,模式也是活的。没有最好的模式,只有最优最合适的模式。