工做的時間快兩年了,仍是用的三層(ui,bll,dal,sqlhelper,common...)...javascript
在工做期間,依然清晰的記得:總是感受本身的基礎不紮實,好比抽象類、抽象方法是如何在實際場景中應用的,接口究竟是幹什麼的(他難道就是一個「鏈接的接口嗎」),構造函數是幹什麼的(固然了,仍是知道他是初始化類的實例),代碼生成器還能自動生成代碼,代碼還能自動生成,怎麼生成的啊,更不知道他的原理是怎樣的了,總之感受太牛逼了,如今想一想本身當時怎麼這麼「二逼」呢?也不知工廠是幹什麼的(就知道他是接收到一個東西(參數),返回一個object),但老是對工廠有種不清醒的認識,泛型也是,就是感受減小了系統的裝箱和拆箱之間轉換的性能問題,提升了運算的性能。成天揹着面向對象的三大特色:「封裝」,「繼承」,「多態」,還記得有些面試題中問道「請試說一下你對面向對象的理解?」,在兩年前,我感受這個問題是在是太簡單了,可是隨着工做的深刻,感受這個問題愈來愈難了,未曾在某個階段好似慢慢的對這個問題認識的更深刻了一些,可是偶爾也感受對這個問題的認識沒有當時學面嚮對象語言的時候認識的深入呢。還有實體是個神馬東西,還有就是實體裏怎麼就還能包含實體呢,有時候聽本身感受牛逼的人說實體就是一個類,只不過他是對關係型數據庫的「映射」,對數據庫表能夠更好更快的crud,當時的感受就是;「神祕,除了神祕仍是神祕,除了完了神祕仍是神祕!!」。通常處理程序和aspx頁面究竟是什麼關係啊,public、protected、private、internal等這些在處理程序中究竟是如何使用的。就知道拖了一個控件放在頁面上,再加上指定的事件,在指定的事件方法中寫程序便可,還記得寫了好長時間的程序,拖了好長時間的控件(還服務器端控件,不是在我電腦上拖的嗎,怎麼還服務器端的呢?),就清晰的記得IsPostBack加上感嘆號「!」就說明是get請求,不回發了什麼的,哦,對了,對get、post請求也不是很清楚,就知道get是獲取(get嘛,英語學的還能夠哈,post,就是往外扔的,對其之間的關係沒有太大的瞭解,還有,get只用做第一次請求來獲取的,post用來增長,刪除,修改的,好,記住這些就行啦,好,挺好,這是當時的知足感),隨着工做的時間慢慢的深刻,這些個東西也就從疑惑中慢慢解脫出來了,當時感受不清楚的太多了,須要瞭解的和須要深刻的太多啦。這些東西都是關於「動態語言、面向對象的語言的」尚未說javascript、xml、css,說到css有種想吐的感受,如今感受之因此想吐,那是由於你對css不熟悉,有太多須要你學,去了解的東西去在實際應用中實踐、去應用,去去去,去吧。css
因爲如今作的項目面臨着寫文檔(項目的結束),三個星期前(好似一個月前,也不清楚了),感受本身不想再搞三層了,傻了了都,再搞三層+代碼生成器直接廢了,隨之就從網上買了一本書《ASP.NET MVC 3 高級編程》等書籍,看了一下mvc的開發的模式,加上看視頻(亂搞),看書,再加上這段時間微薄的工做經驗。本身簡單的「劈」本身一把,以下:java
①首先感受寫程序就像生活同樣的有節奏,需求分析好,模塊劃分好,db設計好(固然你不是萬能的,信我這句話,起碼我本身相信本身不是萬能的,儘可能設計出數據庫和表之間的關係),設計作好,分工明確。就像朋友之間有事情,須要找你幫忙,等你聽了事情以後,大家會按照問題設計出解決方案,而且最後經過各自的努力,找到解決問題的方法,該出錢的出錢,該出力的出力,最後幫助朋友把問題搞定。面試
②上面的抽象類、抽象方法、接口、委託、封裝、繼承、多態、ispostback、get、post、就不說了,不是寫書人,也說很差,就不詳細的寫這些東西的介紹了,書上都有,也有好的博文,我只想發泄一下本身的得到和一些牢騷以及對這些東西簡單的關於本身深刻的理解到的思想。抽象類,抽象方法聽起來,確實是有種「抽象方法只能定義在抽象類中,抽象類中也能夠有執行的方法」的相似的來展轉反側定義,的確是這樣。因此,咱們不只要理解抽象類型和抽象方法的定義,也要真正的學會對問題的抽象,儘量多的抽象,好比:你有好多表,在作系統的過程當中,你「絕對會」每張表進行crud,不然來幹飛機嗎?也存在表之間的select的或其餘的操做行爲。若是,你用代碼代碼生成器,不管是簡單三層仍是抽象工廠模式,你能夠解決對每一張表進行crud,可是等系統越作越大,你就能夠清楚的看到到代碼冗餘,是很是的冗餘。因此,咱們能夠把對每一張表的基本的crud給獨立出來,放到一個基類中,讓基類去實現,如對於某一張表有獨立的操做,就在子類中對該表作單獨的處理。sql
③接口:其實他就是一個約定,給方法加上約定,給工廠加上約定,給類加上約定(讓某個類存在接口中的成員),他的做用就是一個約定,規定。沒別的。我們在看設計模式的時候,也看到過面向接口編程,其做用就是「高層」調用,「底層」實現(高管不會輕易換動的,員工是能夠隨時換的),把方法的實現賦給指定的接口成員,調用接口變量執行實現的操做,只要接口不變,實現能夠作任何變化,這樣就把執行給獨立了出來了,隨之能夠把實現改爲別的實現,不影響接口的調用,起到了擴展的做用。數據庫
④之因此很牛(有不少人,本人只是一介屌絲),就是創建在紮實的基礎之上,不厭其煩的反反覆覆的去弄東西,作的東西越多,對基礎的理解越深入,對代碼N屢次的重複書寫,對功能作過N屢次優化嘗試,N屢次擴展性嘗試,N屢次移植嘗試,才能體驗到面向對象的真正意義。編程
程序人生,人生程序。設計模式