封装抽象才是编程的精髓?
“封装”名列oo的三大特性之首,没有封装,就不会有“面向对象”的说法,而后面的继承和多态,都是建立在封装的基础之上。
封装实体很简单,基本上有什么都已经是确定的了,比如需要采集的数据,把数据归归类那需要的对象和表结构自然就会出来,还有代码,实现这样的需求就需要这么多代码,把这些代码归归类,让一堆代码只完成一个事情,这就是函数的封装。
而封装抽象感觉好难,抽象类,是如此的抽象,以至于不知道如何下手。
我对抽象类和接口的理解,自认为已经很深刻了,但是建立在没有多少代码经验的基础上,接口在抽象工厂里还实战过,抽象类就完全没有实战经验。
抽象类,还是类吗?我以前觉得抽象类还是类啊,只不过不是实实在在的,比如生物,我觉得生物就是个抽象类,它是一个东西,但很抽象。为什么很抽象呢?也许是因为能描述它的属性太少了吧,你不能描述它是什么颜色,也不能说它有几条腿,这些都是不确定的,唯一确定的是:它是一个活的东西。因为属性太少,所以很抽象,是一个抽象类。
而再往下分:动物,也是一个抽象类。
再分:哺乳动物,还是一个抽象类。
再分:人,还是一个抽象类吗?
到人的时候,已经有很多属性可以确定了,比如四条腿啦,一个鼻子两只眼睛等等。但依然有很多不确定的,比如肤色……
那抽象类和非抽象类,就是属性的多少来决定的吗?
在看《大话设计模式》的时候,里面有一个抽象类竟然是“结算”,结算是一个动作啊,我一直会把它弄成一个接口,从来没有想过会建这样的抽象类的……
封装实体很容易,而封装抽象……感觉好难啊
也许这就是架构设计的精髓所在吧,而我显然只是编程入门了还没有入架构的门。
封装实体容易就容易在:有一方式确定的
而封装抽象难就难在:两边都不确定,你如何封装抽象,决定了你怎么写代码去用;而你想如何去写代码,也反过来影响你对抽象的封装和设计……
唉,这个世界就是阴阳互生的呀,有型的东西很好掌握,而无形的能量才是本源所在,可难以捉摸呀。
我的太极图何时才能补上那另一半,良性转起来呢?
各位大神求对抽象封装、抽象类的解读,最好有项目实例。