理解面向对象

可以先从面向过程来说起,我们在大学的时候学了c语言,一种面向过程的语言实现,在思考问题的时候,着重强烈解决问题的步骤。
而面向对象语言的实现,包括java,.net ,vb,现在php也有了一定程度的支持,甚至javascript,其思考问题的方式不是传统的步骤解决问题的步骤,而是先构造对象,比如妈妈做饭,其可以构造妈妈这个对象,有mother,这个私有属性,和 doCookie()这个做饭方法。

面向对象的理解,个人认为分为<1>代码级的面向对像,在这里可以用面向对象的3个基本概念来回答,比如封装(封装的理解个人认为主要有两个方面,1是可以在访问之前做数据权限控制,2另外default,protect,public也是一种封装,并且权限的公开要特别小心,因为越是公有就越危险,任何公开的属性或方法对使用这个方法、属性、类的人(客户)都是一种承诺,不可轻易变动),继承是让子类继承父类的方法或属性,子类与父类是一种is的关系(在这里可以讲讲委托,因为java是单继承(c++是多继承),在使用的时候尽量使用委托,如何区分使用继承和委托,最基本的判断标准是继承是is的关系,而委托是has的关系),多态是java程序在动态运行期间的一种表现行为,配合java的反射机制可以很好设计出很有优秀的程序,比如调度程序等.
                        <2>系统分层甚至更高的架构级的面向对象,如果说代码级的面向对象是一种细粒度的面向对象,那么系统分层甚至更高的架构级的面向对象则是一种粗粒度的面向对象,现在我们有了很多的框架,比如展示层的struts,jsf等,持久层框架hiberate等,他们都负责自己这一层所做的事情,业务逻辑你就负责业务逻辑,DAO你就负责数据访问,不要业务逻辑里面有数据库访问的代码,所以这要就action层调用service,action里不要出现什么if之类的判断(当然一点当不出现,可能不太可能,自己心理要有数),servcie调用dao,所以spring框架就出来了,负责这类的事情,并且提出很多优良的理念.在比如大家都知道现在增值业务市场竞争激烈,为了业务的新需求,中国移动不得不对自己的系统进行改良,我看过很多移动公司很多的系统架构设计,所以可以很清晰的看到,每次改良基本上是将原来好多的功能抽取出来单独弄出来,放到另外一个模块。这个模块你就负责这一块的功能,不是你的工作,就交给其他模块.

posted @ 2014-05-11 23:03  即将成为码农的小王  阅读(125)  评论(0编辑  收藏  举报