首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

反射—认知到理解(一)

反射,是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对象。—— 摘自百度百科。

坦率的说,这句话,理解绝对有困难,太绕了。

继续看,您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。——摘自百度百科。

这句话,就明白了。如果这句话,还不明白,您就是本文的目标读者。

现在的编程是面向对象的,因此,无论是C#还是Java,都是面向对象的。所以,只要你在编程,都会有Class。想要使用Class,你需要new一个出来。这个过程我想大家都会理解。

为何要New?New想当于在内存中建立了这样的一个对象,从无到有。C++中的解释更容易理解,New想当于创建了一个Class变量指针,以后访问这个变量则需要通过指针。了解JVM的,也知道,new了一个class,想当于在内存中为class分配了内存。

所以,在代码中,你可以看到无数个New。一会一New,为的就是创建一个又一个对象,然后进行相关操作。如果你编程已经多年,且从事过一些真正的中大型项目开发,你会发现,New一个固定Class,非常不灵活。很多情况下,需要New不同的Class,换句话来讲,你需要动态创建,在何种情况下去New一个什么样的对象出来,这样会很灵活。这种动态创建的需求日益凸显,结果大家发现动态创建一个类,真的很灵活,也真的很好维护。既然如此,那就按照这个思路来开发。

如果还不明白,那就继续。

面向对象思想是什么?网上有句话叫:你办事我放心。就是这个意思,再深入一下,你办事我放不放心,也没辙。面向对象解决的问题是什么?可重用,可扩展。所以,面向对象已经成为主流。

再进一步,面向对象思想是基础,基于此,还有面向接口编程,更进一步强调了接口的重要性,只要符合这个接口标准的对象,均可被使用。这个很容易理解,就好像电源插座,只要你符合标准,任何插头都可以插入此插座达到用电需求。接口就是一种标准,在此标准框架下,需要去实现不同Class,以解决不同的问题。就好像插座规格标准,只要符合此规格,任何插头都可以使用,譬如:电视机、电脑、冰箱及各种用电设备。

仔细理解,应该开始明白一些了吧。

为了提升软件的灵活性,降低耦合度,接口就非常重要的。这就是一个标准,可以理解为插座标准,然后基于这个插座标准,你可以创建很多个类,只要符合标准,无论是谁,都可以从插座取电,所以对于class而言,只要符合接口标准,无论是谁,都可以被调用使用。工厂模式就是干这件事的。

进入正题 — 反射

实际上面所讲,已经将反射的基础都讲到了,首先,你要知道class需要new的,然后你要知道接口的重要性,再然后你要知道基于接口的标准下实现的class都可以被调用,最后,还要知道,在某些情况下,需要动态调用一些类满足不同的应用场景。

为了解决这个问题,反射出现了。

反射就是要让你可以动态的调用不同的类,来实现不同的操作。而如何实现动态调用,要想动态调用,首先你得有个所有类的记录信息,然后你要有个配置信息,根据输入的信息,从类的记录信息里面选择不同的类名出来,然后交由系统实现new。所以,反射,通常都需要有个配置文件什么的。

未完待续!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212G0JBII00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券