|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实Java之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是Java的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。在谈到不会容易改动的架构上的决意时,其实不限于该计划相干的决意是不成逆的和从此变更的本钱会相称的高这两种。不会容易改动的决意无处不在,从某一层的计划到某个类的属性都有大概。
1,修正营业逻辑的构造体例
营业逻辑的构造体例也许能够分上面四种:
1)事物剧本形式
2)表模块形式
3)举动纪录形式
4)范畴模子形式
选择营业逻辑形式就是一个必要非常细心思索的决意,一旦断定上去,再要修正别的的形式,将会十分的贫苦,会在很年夜水平上影响到数据会见层和使用层(服务层),乃至还会影响到体现层。若必要在项目中颠覆该决意,不免会形成全部体系层面的重构。
2,改用另外一个类库
好比你已基于某个特定的类库开辟了一些功效(好比利用了一个富文本把持),而有一天向导请求你不克不及利用该类库。这时候,我们就不能不处置一个料想以外的非功效的需求。
需求上的一个修正大概会使架构也随之调剂,不外带来的本钱又怎样呢?这时候,我们一样平常都要全力满意新的需求,由于不会有商议的余地。
在最好的情形下,你大概能够找到一个相似的,差未几的类库来取代,不然,就要思索是不是修正原本的架构,从而让体系不再必要利用该类库。
我们比来就碰到了一个相似的成绩,这个类库是一个工具/干系映照工具。假如一个UI控件类库,那末处置起来大概就绝对的复杂,但利用另外一个工具/干系映照工具却不是那末的简单,只能思索利用另外一个相似功效的工具。
3,修正机关函数的署名
不要觉得架构存眷的都是一些高条理的决意,比方,下面那些会影响到两头层计划和完成的中央,哪怕是修正机关函数署名这亲的一个成绩都有大概让你堕入泥潭。
比方,使用程序的工具模子中保护着一个Order类。同时你也没有利用工场来创立这个Order类的实例。这些在项目中的各个中央大概都充溢着相似于newOrder()代码,但你没有发明这个Order类和某个范例(比方Customer)有着依附。俄然有一天,某个必要请求Order类必需与Customer类一同创立,那末此时又该怎样做呢?
如果仅仅为Order新增一个新的机关函数,承受一个Customer作为参数明显没有满意需求,由于Order的原有机关函数仍然可使用,假如删除本来的Order机关函数,又不能不修正本来大批的newOrder语句。但假如本来已为Order类界说了工场,那末满意新的需求就变的十分复杂了(必要提示的,范畴驱动计划是实际实践上倡议老是利用工场来创立庞大工具)。
4,修正成员的润色符
在计划范例时,必要决意范例是public的仍是internal的,和范例是sealed的仍是能够被承继的,最初要决意各个办法是否是必要virtual。如果误用了virtual或sealed润色符,大概会让计划变的十分的丑恶。
一样平常来讲,利用virtual和sealed润色符必要承当很多的义务。在C#中,默许情形下范例均长短密封非virtual的。而在java中,办法默许是virtual的。关于.net范例又该怎样做呢?
从计划的角度思索,密封类看起来十分的完善。实践上,假如范例一入手下手就被声明为密封,那末即便已基于该范例编写了程序,往后改成非密封的也很复杂,同时也不会带来甚么不兼容的中央。Virtual办法也是云云,这个纪律也能够使用到范例及范例成员的可见性上,即默许为private,假如相反处置,就不是那末简单了。
但假如从测试角度思索,非密封类和virtual办法会年夜小气便测试。不外可以有何种水平上的便利取决于利用的测试工具。比方,TypeMock这个测试工具就不会遭到这个限定。因而我们很难针对sealed和virtual关头字给出一个明白的利用倡议。
(本文摘自:Microsoft.NET企业级使用架构计划)我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。 |
|