您的位置:首页 > 运维架构

OPP,OOP,AOP,IoC,DI的个人理解

2011-03-16 21:40 423 查看
先说大点的,个人感觉泛点。

说错了欢迎只正,没有用Google验证我理解的准确性,只凭记忆涂的。

AOP,他是一种思想,是OOP的延展。

说OOP就来说下之前的OPP,最早开始的程序,一个函数(方法)或者说是功能做一个事情,这种思想划分的是一个功能一个功能的来组合解决问题。

后来人们发现,功能解决问题是解决了,但是功能太多了,人脑实在是有限,太劳财伤命了,而且跟人们看世界的方法有点差异,人们都习惯把某一类的习性划分一起,作为一个整体研究,而不是把某一个习性放一起,很多个种类的东西都拥有这个习性。

所以就搞了一种OOP来解决问题,这个的好处就是在于把某一类或者说某一种特性的功能组合在一起,赋给抽象的对象,这样跟你我他这种人们的世界观很接近,而且不用研究你啊我啊能干什么,只要知道大家都是人类,人类会有一些通用的什么方法类之类的,而你我具体有些什么嗜好差异,就不管了,这样一来,就能把人力集合起来,各司其职了。脉络就清晰了。

再就是AOP,其实这几个都是人类生产力方式的转变有关,有一定的相通处。这个就更加细化了,他把抽象中的某些方面做了合集,就好比大公司,如果一个经理管理具体细致到人,而且管吃喝住行之类的啥都插一脚,他也很累,而且管得也不够多,但是如果他只管某一个方面的东西,比如大家吃,那样就可以多管很多人,他也能轻松很多,这样就可以找不同的经理来管不同方面,效率又会更加高,所以AOP就出来了,之前的OOP,很多种类,很多抽象的东西,你要调用某个类别的方法,至少要知道他是谁,能干嘛直接去调用,而此时你根本不想知道这些,(比如你要找个洗碗的,你肯定不想了解他能不能吃饭,个子高不高之类的,你只要他能给你干好活就可以了)因为你只关心你要的方法,其余的都是多余的。所以AOP的话,有一个专门的管理者帮你管理你要的方法,一种方面的东西,比如add什么,这样是不更省心省力。

所以说, OPP,OOP,AOP,区别就是"字母不同"!是什么意思,就是什么区别。

然后就是DI和IoC。 这个其实就某人觉得IoC不够响亮 ,所以取了个新名字而已。但是其实也是有区别的

IoC他其实也是个抽象的东西,可能不同的语言有不同的方法来实现这种抽象概念(类似设计模式的一种,现在应该算是一种设计模式了) ,而DI就是实现它的一种比较具体的做法,(例如假如某个语言没有inteface的概念,那么肯定就不会有inteface injection这中注入方式了不)。比如除了DI,工厂模式 也是用来实现IoC的一个办法,只是java有反射机制,那么用DI来实现,耦合性更低更优美。(如果某个语言没有反射,那么工厂模式应该就是用来实现的一个办法了)。

就像AOP可以用 代理模式来 实现一样,差不多的意思。

反正我感觉这些东西就像我刚开始理解 策略和工厂,代理和装饰 之类的设计模式差异一样,比较容易没有清晰的概念,一团团的,要经常琢磨,经常把看到的和写的代码实际套上去论证,慢慢就有点概念了。

总之就是一个容器,或者说一个系统里面命名出来的东西,多看看,先硬记住,然后碰到了又想想,慢慢的思想里面有这个概念了,就差不多开始掌握了,和学数学碰到新符号一样的。

发现还忘了理解 AOP和IoC的关系了, 这两个其实是两方面的东西。

IoC就是把使用者要使用的东西的控制权拿到具体使用对象的外面来控制,有一个统一的系统或者说容器控制它,那么当你掌控了对象的时候,自然就有能力来控制它的方法和生死,这样你就可以把某一个方面上的方法对象行成一个面从而控制他,也就可以很好的实现AOP这种思想了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: