工做的时间快两年了,仍是用的三层(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屡次移植尝试,才能体验到面向对象的真正意义。编程
程序人生,人生程序。设计模式