芥子须弥----封装(转)

芥子须弥
                  ----封装
作者:HolyFire
说起面向对象OOP首先就有人大喊着封装
究竟封装是什么呢,为什么要封装?
是的,本来并没有封装,封装是由于人们的需要才产生的,就如同计算机来到人间,编程语言进入你的大脑,自然而然。
在没有封装的时候,人们一样在编程,并没有因为封装的出现使得猿猴变成了人,所以封装没有那么神秘,可怕。
想象一下,我们生活里也有很多封装:食品被放在袋子里,用来防止混入灰尘和昆虫侵蚀;戴上太阳镜,防止紫外线伤害眼睛;钱和贵重物品放在保险柜里,防止心术不正的人。
好了,我们看出一点,封装的一个作用是保护我们的东西。
在生活中,有很多惯例,这里要提到一点,那就永真式,这是一个表示在无论什么情况下都为真的式子,当然这是一种理想的情况,但人们往往喜欢创造这样的东西,就象“水往低处流” 。牛顿说“由于地球引力,所以苹果是往地上掉的”幸亏有这样的道理,我们才有水喝,有苹果吃。当然了在地球上很难找出反例,所以我们无需考虑苹果飞上天的可能性。又如人的听觉范围是2kHZ~~20kHZ,如果有人说地球上会有一个人的听觉超出这个范围,我一点异议都没有,但是我还是把人的听觉作为2kHZ~~20kHZ来处理,应为概率论上有一句,小概率的事是不会发生的,我不打算证实他,我只是想利用他,我只处理2kHZ~~20kHZ的听觉范围,在绝大多数领域里,这样做足够了,让在这方面有特别要求的人挣扎去吧,少处理这些个别的人会带来更多的好处。
我们又能发觉到,封装的好处能降低复杂度。
我想没有人会愚蠢到将一只羊和一只牛相加,得到两只羊或两只牛这样的结果,但是两只动物这样的结果却是可以接受的。
这样看来,封装他能够降低出错的可能性。
封装所做的远远不是这些。
等等,各位心中是不是充满了疑惑。
讲了这么久,为什么不说明封装到底是什么呢,文中并没有提到啊。
聪明的朋友,封装并不是什么东西,也不是什么方法,他是人们考虑和解决问题的思路,他就是你的思想,就是你的灵感一闪,就是你的锦囊妙计。封装就是人们为了更好的管理和使用事物的方案,它可以让你更方便,更安全的做你想做的事,长久以来,充满智慧的杰出者们摸索出一些使用封装来解决问题的办法。
在编程的应用上,我们看看封装给我们带来的好处吧。

时间: 2024-12-22 03:24:38

芥子须弥----封装(转)的相关文章

白马非马----继承(我还转)

白马非马                   ----继承作者:HolyFire古人云:"白马非马",为何如是说呢.这里有个讲究,白马是指一种白色的马,而非马里的马指的是各种各样的马,有黑马,棕吗,五花马等等,这是在颜色上有所区别,马还有产地,品种等等区别.这里给了我们一个启示,各种各样的马可以找出很多共同点,称之为马,符合这些特点的动物就是马了,所以这些共同点不能多也不能少,多了不能同用于所有的马,少了表达不出马来.要区别一只马需要很多信息,比如一只黑色的蒙古马,在这里,我除了描述一

swift版的GCD封装

swift版的GCD封装   说明 本人针对swift封装了GCD,包括GCDQueue,GCDGroup,GCDTimer以及GCDSemaphore,使用较为便利.   源码 https://github.com/YouXianMing/Swift-GCD // // GCDQueue.swift // GCD // // http://home.cnblogs.com/u/YouXianMing/ // https://github.com/YouXianMing // // Create

封装dll-C# 中如何将一个类文件 封装成.dll文件

问题描述 C# 中如何将一个类文件 封装成.dll文件 我现在在c#程序里面写了几个通用的类,里面包括数据库的操作,网页表单的基本验证以及自己平时总结的一些很好用的方法,我现在想把这些类或者某一个类封装成一个dll文件,最好是所有的类都封装成一个dll,想请问一下各位怎么做,以前没做过将类封装成dll,麻烦大家帮帮小弟,最好有代码,谢谢了! 解决方案 封装成dll不就是将它编译成dll吗? 在bin文件下就有编译的dll 解决方案二: 在VS中新建一个类库工程,把你的类文件导到新建的工程里,编译

ios-从xib到storyboard的封装性问题

问题描述 从xib到storyboard的封装性问题 用xib可以调用不同的初始化块. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Fetch Note... // Initialize Edit Note View Controller with the fetched Note EditNoteViewController *vc = [[Ed

iOS开发之微信聊天工具栏的封装

之前山寨了一个新浪微博(iOS开发之山寨版新浪微博小结),这几天就山寨个微信吧.之前已经把微信的视图结构简单的拖了一下(IOS开发之微信山寨版),今天就开始给微信加上具体的实现功能,那么就先从微信的聊天界面开始吧.提到封装是少不了写代码的,在封装组件的时候,为了组件的可移植性,我们就不能用storyboard来拖拽了.为了屏幕的适配,适应不同屏幕的手机,所以在封装组件的时候是少不了为我们的组件来添加约束.今天博客中的所有代码都是脱离storyboard的,这些代码在别的工程中也是可以使用的.好,

JavaScript面向对象程序设计(8) 优雅的封装还是执行的效率?

优雅的封装还是执行的效率?这是一个悖论. 优雅封装的程序看起来是那么的美妙:每个属性被隐藏在对象之后,你所能看到的就是这个对象让你 看到的,至于它到底是怎么操作的,这个不需要你操心. 执行的效率就是另外一回事.就像是C语言和面向对象的C++之间的差别:C++很优雅,但是执行效率 ,无论是编译后的二进制代码还是运行期的内存的占用,都要比简单的C语言多出一截来. 这个问题在脚本语言中显得更加重要,因为JavaScript根本就是一种解释语言,解释语言的执行效率 要比编译语言低很多. 1.优雅的封装

对AsyncTask进行封装,简化繁琐的异步操作

对于android的异步操作,往往有二种方法给予我们选择.      一:Thread+Handler      二:  AsyncTask        对于二者的相同与异同点,这里并不去进行比较.这里提供一种简化异步操作的方法,供大家参考学习.         代码参考自AndEngine,不过我对它做了一定的修改,让它更适合自己目前项目的开发,感谢open source 能够让我们去学习和阅读那么多优秀的代码.        废话不多说,代码如下:        CallEarliest<

sg3525a-求SG3525A贴片封装尺寸

问题描述 求SG3525A贴片封装尺寸 求SG3525A贴片封装尺寸 求SG3525A贴片封装尺寸求SG3525A贴片封装尺寸 解决方案 贴片电阻封装尺寸

JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买电脑来说吧,首先,你不懂电脑,你去电脑城买电脑,和大象装冰箱里一样,是什么步骤?咨询 砍价 ,谈妥了就那电脑走人,对吧,这就是面向过程的思想,而面向对象是:你有一个哥们,他懂电脑,什么都会,你只要带他去,就行,你这个哥们就是对象,在JAVA中,我们就是操作一个对象去完成各种各样的操作的,这就是面向对