这是我在segmentfault回答的一个问题里的回复,以为写的挺多的有点恶搞在里面,拿来给大伙分享一下。css
其实作了这些年的项目,经历和见识了不少种的设计。
好比:给你文档要你彻底按照文档来写甚至每一个service里面的方法名都有规范,只是没有严格 到怎么去实现他们,我以为这就是半填空的coding;java
有一种是彻底填空的coding甚至说调用的方法都有参考文档,让你来作的目的就是把谁调用谁填进去,这种是彻底填空coding;sql
需求拿来本身设计本身来实现,我以为这是全包的coding啊,小公司不少这样;还有一种接手的项目已经存在且有本身的 架构了,咱们作的目的就是来完美它丰满它;segmentfault
公司有个新的案子要从头来作,大家团队中有架构有pg有qa,各司其职这种应该算是比较正常的了。设计模式
上面说的这些例子有没有发现一个问题,除了严格的限制你要作什么和你只能作什么之外,其实在团队开发中你身处的角色决定了这个框架的走向,作ui的 只是在意view,甚至他们只是看js css纯ui哦!作service的只是在意前台和他交互,他怎么和dao去交互。作dao只在意怎么把service告诉个人东西再交给db,怎么把 db的东西交给service。架构
说的这些可能会认为我跑题太严重了,其实否则!我举的例子不可能包含了所有,还只是很小的一部分,就和设计模式同样,曾经看到有人说“什么设计 模式啊,不少的这种所谓的设计模式放到其余的语言都没有意义”(我是搞java的),他说的有些是对的,正如中国从古代就讲究不完美同样,那个怎么说来 着?“大道五十,天衍四十九,留一线生机,遁去一道”,别吵!我不是看仙侠小说看多了!mvc
我想说的实际上是没有完美的!人不完美,事物也不完美,随着你的学识、见闻、体验总能从之前看似完美的东西里面去找出不完美的一面,因此你们仍是不要 费劲的去追求完美了,若是完美了就不会有什么多少种的设计模式了,一种足以,还有什么nosql,还有什么mvc框架,mvc只是个主流而已,还有不少叫 不上名字的(由于人家可能根本没起个好听的名字)。框架
好吧,题主的问题我到如今都没有认真的回复这是不对的,上面这些就是想说一个道理,作本身在这个时刻认为是对的事情就能够了,之后的事情能够适当的去想,可是你的这个之后其实也是有个长度的,想的老是不会太远。nosql
这里开始说下问题的回答。函数
public class OrderComposeService{ public void composeOrder(){ //TODO } public void composeSku(){ //TODO } }
这段代码,你以为和上下文不一致性,“关于业务分层”的帖子特地去看了下,后面有人提到用helper,manager,facade来作那段“不 和谐”的代码都对,哪怕你准备用XX来作均可以的,不就是个名字吗?我们要的是种思想!我意识到了这段“不和谐”,我就去让它看上去“和谐”点呗。
其实咱们周围的写的不少代码,都是过程式的书写。
这句话我很是认同,还记得学oo以前,老师跟我吹呼说不少的语言都是过程的、函数的、程式的、方法的,java但是面向对象的,听上去高大上,但实际呢?就好像天天在家里看ccav很是美好,但出门怎么样?现实和想象老是有差距的。
真正去使用的时候老是图省事没有写“繁琐”的oo代码,好比下面这段
class 我{ N种牛X的属性。。。 public void 作超人(){ 无敌了。。想到什么都写这里 } }
一个method就是超人了,牛不牛?写的时候为何就不想一想,最少得有个红裤衩传给你才能变身呢?超人会干啥?眼睛冒激光,这不得有个光学的类 吗?力大无穷?好么这最少牵扯到了人体学。还能飞呢!咱们在这能把人体学重用了!超人不是还有女的吗?可是女超人有件事不能作哦!
class 她{ N种牛X的属性。。。 public void 作超人(){ 无敌了(比“我”差一点 ,有件事不能作!)。。想到什么都写这里 } }
ps:我是男的,因此上面没写男超人,呵呵。
好吧,女超人比较惨我们让她少作一件事,但他们都是超人啊!怎么能写2个类?就要写一个!可是我就一个作超人的method啊,怎么办?这样吧,咱弄个子类继承男超人的优势吧!不行咱就重载一下作超人的method好了。下面就不写了,多态的孩子快出来了。
上面恶搞了一下,不少概念工做年头多了的人都明白,其实概念不会是记的很清楚,可是都知道是怎么回事,我也记的不是很清楚,但就是随便写了,哪怕看到的可能有问题,但老是从一个角度去看能够说通!
这不就是设计吗?这不就是分层吗?这不就是学以至用吗?学java之初说的那个oo的概念,其实我总以为和那句“道可道,很是道”很相同,道不是说 他们说的事情相同,而是那种描述的感受很像,有些事情可能说不清楚,可是你明白,这就是只可意会不可言传啊,以前在segmentfault看到过个例子 (人类玩扑克开车之类的……)帮忙说怎么写class,仍是segmentfault的人很少,或者不少人瞧不上这种问题,我敢说若是有100我的让他们 去写,可能会出现101种方式,你不能要求一我的只能写一种。