关于面向对象的一点思考
程序也写了接近两年了,说来惭愧,最近才开始慢慢的涉及到面向对象的思考,参考各位牛人的思想,阐述一下自己的一些想法
1.面向对象用来做什么?怎么实现?目的是什么?
2.面向对象与三层架构的关系
1。面向对象的目的和具体的用途
我们天天在喊着面向对象的程序分析,面向对象的程序设计,是否做到了面向对象呢?
为什么要使用面向对象的分析设计,在以前都是使用面向过程的程序设计,面向过程认为每个事物都是相互关联的,逻辑划分的很明确,先是什么,再是什么,最后是什么,每个环节都是确定的,然而当系统变得越来越复杂,越来越多的因素需要考虑,超出了我们所能考虑的到的问题之后,修改一个小地方,可能影响至整个系统,为了解决这种复杂性,从而诞生了面向对象
面向对象就是为了构建更大的更复杂的系统而诞生的,面向对象的分析认为每个对象之间都是相互独立的,相互不影响的,每个对象都有其职责,这个职责是确定好了的,从而在构建系统的时候我们并不关心这些对象是如何相互关联的,我们并不期望去控制这个场景,我们只是抽象出这个对象,从而在某个特定的规则或条件下去组建我们所需要的系统,当我们的系统改变之后,我们的这些对象依然存在,我们只是换了一种规则,从而达到了类的复用
面向对象的具体来说就是继承、封装、多态。
面向对象最大的好处就是复用和适于变化。
——复用:我们的两个应用程序需要实现相同的功能,例如登陆
——适于变化:在原来设计的基础之上,易于扩展
面向对象的难点在于抽象,如何抽象出类的职责,这个类具有哪些属性,具有哪些方法。
2。面向对象与三层架构的关系
面向对象和三层架构好像没有关系,因为面向对象是一种思想,而三层架构可以说是一种模式,这里来谈它们之间的关系只是站在一个抽象层次的角度来看待这个问题
三层架构就是用不同的抽象层次或者是角度来进行抽象的,主要的是BLL层(逻辑业务层)和DAL层(数据层)
——开始总是认为如果我们仅仅需要的只是单纯的一份数据,那么我们何必还要组织一个BLL的类,何不直接调用DAL的类呢?其实这是一个更高的抽象层次的问题,在DAL中或许会返回很多的数据,但是在BLL之中我们可以组织一些更高层次的类。例如:BLL中有一个银行业务类,会需要很多数据,而这些数据又是多个DAL中的类返回的结果,从而我们只需要了解BLL中高层次的抽象,而不用去管这个具体的数据从何而来,当我们需要修改一个的时候,我们只需要修改DAL中的数据即可
三层架构是将各种职责分割开来,体现职责的单一性,在其中也体现了一些面向对象的思想,这也就引出了设计模式,从而三层架构体现了面向对象的思想