程序人生,人生程序。(面向对象的奇葩理解)

   工作的时间快两年了,还是用的三层(ui,bll,dal,sqlhelper,common...)...

   在工作期间,依然清晰的记得:老是感觉自己的基础不扎实,比如抽象类、抽象方法是如何在实际场景中应用的,接口到底是干什么的(他难道就是一个“连接的接口吗”),构造函数是干什么的(当然了,还是知道他是初始化类的实例),代码生成器还能自动生成代码,代码还能自动生成,怎么生成的啊,更不知道他的原理是怎样的了,总之感觉太牛逼了,现在想想自己当时怎么这么“二逼”呢?也不知工厂是干什么的(就知道他是接收到一个东西(参数),返回一个object),但总是对工厂有种不清醒的认识,泛型也是,就是感觉减少了系统的装箱和拆箱之间转换的性能问题,提高了运算的性能。整天背着面向对象的三大特点:“封装”,“继承”,“多态”,还记得有些面试题中问道“请试说一下你对面向对象的理解?”,在两年前,我感觉这个问题是在是太简单了,但是随着工作的深入,感觉这个问题越来越难了,不曾在某个阶段好似慢慢的对这个问题认识的更深入了一些,但是偶尔也感觉对这个问题的认识没有当时学面向对象语言的时候认识的深刻呢。还有实体是个神马东西,还有就是实体里怎么就还能包含实体呢,有时候听自己感觉牛逼的人说实体就是一个类,只不过他是对关系型数据库的“映射”,对数据库表可以更好更快的crud,当时的感觉就是;“神秘,除了神秘还是神秘,除了完了神秘还是神秘!!”。一般处理程序和aspx页面到底是什么关系啊,public、protected、private、internal等这些在处理程序中到底是如何使用的。就知道拖了一个控件放在页面上,再加上指定的事件,在指定的事件方法中写程序即可,还记得写了好长时间的程序,拖了好长时间的控件(还服务器端控件,不是在我电脑上拖的吗,怎么还服务器端的呢?),就清晰的记得IsPostBack加上感叹号“!”就说明是get请求,不回发了什么的,哦,对了,对get、post请求也不是很清楚,就知道get是获取(get嘛,英语学的还可以哈,post,就是往外扔的,对其之间的关系没有太大的了解,还有,get只用作第一次请求来获取的,post用来增加,删除,修改的,好,记住这些就行啦,好,挺好,这是当时的满足感),随着工作的时间慢慢的深入,这些个东西也就从疑惑中慢慢解脱出来了,当时感觉不清楚的太多了,需要了解的和需要深入的太多啦。这些东西都是关于“动态语言、面向对象的语言的”还没有说javascript、xml、css,说到css有种想吐的感觉,现在感觉之所以想吐,那是因为你对css不熟悉,有太多需要你学,去了解的东西去在实际应用中实践、去应用,去去去,去吧。

  由于现在做的项目面临着写文档(项目的结束),三个星期前(好似一个月前,也不清楚了),感觉自己不想再搞三层了,傻了了都,再搞三层+代码生成器直接废了,随之就从网上买了一本书《ASP.NET MVC 3 高级编程》等书籍,看了一下mvc的开发的模式,加上看视频(乱搞),看书,再加上这段时间微薄的工作经验。自己简单的“劈”自己一把,如下:

①首先感觉写程序就像生活一样的有节奏,需求分析好,模块划分好,db设计好(当然你不是万能的,信我这句话,起码我自己相信自己不是万能的,尽量设计出数据库和表之间的关系),设计做好,分工明确。就像朋友之间有事情,需要找你帮忙,等你听了事情之后,你们会按照问题设计出解决方案,并且最后通过各自的努力,找到解决问题的方法,该出钱的出钱,该出力的出力,最后帮助朋友把问题搞定。

②上面的抽象类、抽象方法、接口、委托、封装、继承、多态、ispostback、get、post、就不说了,不是写书人,也说不好,就不详细的写这些东西的介绍了,书上都有,也有好的博文,我只想发泄一下自己的获得和一些牢骚以及对这些东西简单的关于自己深入的理解到的思想。抽象类,抽象方法听起来,确实是有种“抽象方法只能定义在抽象类中,抽象类中也可以有执行的方法”的类似的来辗转反侧定义,的确是这样。所以,我们不仅要理解抽象类型和抽象方法的定义,也要真正的学会对问题的抽象,尽可能多的抽象,比如:你有好多表,在做系统的过程中,你“绝对会”每张表进行crud,否则来干飞机吗?也存在表之间的select的或其他的操作行为。如果,你用代码代码生成器,不论是简单三层还是抽象工厂模式,你可以解决对每一张表进行crud,但是等系统越做越大,你就可以清楚的看到到代码冗余,是非常的冗余。所以,我们可以把对每一张表的基本的crud给独立出来,放到一个基类中,让基类去实现,如对于某一张表有独立的操作,就在子类中对该表做单独的处理。

③接口:其实他就是一个约定,给方法加上约定,给工厂加上约定,给类加上约定(让某个类存在接口中的成员),他的作用就是一个约定,规定。没别的。咱们在看设计模式的时候,也看到过面向接口编程,其作用就是“高层”调用,“底层”实现(高管不会轻易换动的,员工是可以随时换的),把方法的实现赋给指定的接口成员,调用接口变量执行实现的操作,只要接口不变,实现可以做任何变化,这样就把执行给独立了出来了,随之可以把实现改成别的实现,不影响接口的调用,起到了扩展的作用。

④之所以很牛(有很多人,本人只是一介屌丝),就是建立在扎实的基础之上,不厌其烦的反反复复的去弄东西,做的东西越多,对基础的理解越深刻,对代码N多次的重复书写,对功能做过N多次优化尝试,N多次扩展性尝试,N多次移植尝试,才能体验到面向对象的真正意义。

程序人生,人生程序。

程序人生,人生程序。(面向对象的奇葩理解)

上一篇:[转载]EasyUI Pagination 分页的两种做法


下一篇:一月17日新生冬季练习赛解题报告H.龟兔赛跑