从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...
一 DBContext的構(gòu)造方法,方法的重載
二 DBContext實例中,表實體對象是怎么被加入的
三 分部類是否破壞了單一職責
四 分部方法從另一方面定義了類型的操作規(guī)范
五 LINQ實體類中對屬性的賦值,變化前與變化后SendPropertyChanging與SendPropertyChanged
六 LINQTOSQL中為我們觸發(fā)了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么
七 為DBContext對象應(yīng)該作為其它實體操作類型的基類,并為它提供統(tǒng)一的提交動作
?
?
先來看一下“百度百科”對單一職責的定義: 一個類,只有一個引起它變化的原因。應(yīng)該只有一個職責。每一個職責都是變化的一個軸線,如果一個類有一個以上的職責,這些職責就耦合在了一起。這會導(dǎo)致脆弱的設(shè)計。當一個職責發(fā)生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復(fù)用性。例如:要實現(xiàn)邏輯和界面的分離。
分部類(Partial)也算是.net的一種新東西,沒有記錯應(yīng)該是在2.0的時候出現(xiàn)的,MSDN上的定義是:
可以將類或結(jié)構(gòu)、接口或方法的定義拆分到兩個或多個源文件中。 每個源文件包含類型或方法定義的一部分,編譯應(yīng)用程序時將把所有部分組合起來。
我的理解是:當一個類在一個時間期間不能完成或不確定完成這個類的所有功能時,可以先將這個類定義成partial,它允許你在另一個地方去對同一個類進行補充,這種技術(shù)微軟在linq to sql上大大的采用,當然,由于種種原因,這種使用被一些人看來是破壞了類的單一職責原則,其實,在我看來,這只是對同一職責的類,進行的一個補充,類要完成的還是那些事,只是原來不確定要干什么,或者怎么去干,而當它知道如何去實現(xiàn)時,可以定義一個partial,去完善它。linq to sql的代碼由IDE自動生成,所以有些東西對于開發(fā)人員是不夠的,而微軟當然知道這一切,所以將它設(shè)計成partial,以便讓程序員根據(jù)自己的需要對類進行補充,而不是擴展。
1 [global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.Web_ExceptionLog")] 2 public partial class Web_ExceptionLog : INotifyPropertyChanging, INotifyPropertyChanged 3 { 4 5 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 6 7 private string _ExceptionID; 8 9 private string _FullInfo; 10 11 private string _Senders; 12 13 private string _HttpMethod; 14 15 private System.DateTime _OccurTime; 16 17 // ……?
這是IDE自動生成的linq to sql的一個實體對象,我們希望將這個類進行補充,之后的代碼如:
1 public partial class Web_ExceptionLog : Entity.EntityBase 2 { 3 protected override object[] PrimaryKey 4 { 5 get { return new object[] { this.ExceptionID }; } 6 } 7 8 public override IEnumerable<RuleViolation> GetRuleViolations() 9 { 10 throw new NotImplementedException(); 11 } 12 }?
?所以說,分部類破壞了類型的單一職責是不準確的,就像好的東西,在不同的人手中所表現(xiàn)出來的力量也是不同的,道理是一樣的。呵呵。
轉(zhuǎn)載于:https://www.cnblogs.com/lori/archive/2012/03/26/2418816.html
總結(jié)
以上是生活随笔為你收集整理的从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到墙倒了怎么回事
- 下一篇: 单身的女生梦到自己谈恋爱了是什么意思