谈谈对 ”框架“ 这个概念的理解,以及它和库的区别
2015-10-17 14:28
393 查看
当一个编程新手真正想要写出一些可以用的程序,比较快速的方法是在一个框架的基础上完成。不过另一方面对于新手来说,用框架的缺点就是,用完了框架,可能会发现还是不理解整个系统,因为只添加代码是不够的,要理解系统,就必须要理解进程的执行流程。
“框架”的定义是什么?按照我的理解,如果一个应用程序的代码是可以扩展的,我们就称这个应用程序的代码是一个框架。这里的“扩展”具体是一个什么概念呢?一般而言,一个框架被确定的时候,进程的大致执行流程就已经确定好了,程序员如果想要扩展这个框架,可以通过“继承+覆写”的方式完成。扩展的具体过程如下:
我们都知道在面向对象编程中,基类的指针可以指向基类和它的子类,程序员想要扩展程序,第一步是用一个新的类继承原框架中的某个类,覆写某些方法;第二步是在进程实例化父类的地方稍微修改一下代码,用自定义类的对象去替换原本的对象。就完成了整个扩展的过程。如果我们看不到实例化类的那一部分代码,那么替换的过程往往是通过修改配置文件xml的方式来实现的,这个文件会在框架的某个地方被读取。如果不是面向对象编程,也可以通过添加模块的方式来完成,第一步是添加一些可以被进程执行的函数;第二步是在某些地方让进程调用这些函数。
明白了如何扩展一个框架,程序员才能更好的理解什么能够做到,什么不能做到,能够完成合理的设计。完整地分析进程的执行流程是理解一个框架的基本要求,这样我们才知道要继承哪些类,覆写哪些方法,在什么地方用自己的类替换框架自带的类。例如在iOS应用开发中,我们常常听见自定义导航控制器做法,这对于一个不理解扩展原理的程序员来说,是非常难以想象的。不过现在我们可以知道,自定义导航控制器,并不是重新去写一个控制器,而是用一个类继承导航控制器,覆写控制器中的某些方法,然后在实例化控制器的地方用自己的类替换掉原来的类。
正确理解扩展原理,我们也就能更好地理解框架和类库的区别了。框架已经把进程的整个执行流程定义好了,程序员的工作是覆写和替换;而类库定义了进程的某些局部流程,整个系统的流程是由程序员来定义的。框架和类库都有助于减少重复代码。
“框架”的定义是什么?按照我的理解,如果一个应用程序的代码是可以扩展的,我们就称这个应用程序的代码是一个框架。这里的“扩展”具体是一个什么概念呢?一般而言,一个框架被确定的时候,进程的大致执行流程就已经确定好了,程序员如果想要扩展这个框架,可以通过“继承+覆写”的方式完成。扩展的具体过程如下:
我们都知道在面向对象编程中,基类的指针可以指向基类和它的子类,程序员想要扩展程序,第一步是用一个新的类继承原框架中的某个类,覆写某些方法;第二步是在进程实例化父类的地方稍微修改一下代码,用自定义类的对象去替换原本的对象。就完成了整个扩展的过程。如果我们看不到实例化类的那一部分代码,那么替换的过程往往是通过修改配置文件xml的方式来实现的,这个文件会在框架的某个地方被读取。如果不是面向对象编程,也可以通过添加模块的方式来完成,第一步是添加一些可以被进程执行的函数;第二步是在某些地方让进程调用这些函数。
明白了如何扩展一个框架,程序员才能更好的理解什么能够做到,什么不能做到,能够完成合理的设计。完整地分析进程的执行流程是理解一个框架的基本要求,这样我们才知道要继承哪些类,覆写哪些方法,在什么地方用自己的类替换框架自带的类。例如在iOS应用开发中,我们常常听见自定义导航控制器做法,这对于一个不理解扩展原理的程序员来说,是非常难以想象的。不过现在我们可以知道,自定义导航控制器,并不是重新去写一个控制器,而是用一个类继承导航控制器,覆写控制器中的某些方法,然后在实例化控制器的地方用自己的类替换掉原来的类。
正确理解扩展原理,我们也就能更好地理解框架和类库的区别了。框架已经把进程的整个执行流程定义好了,程序员的工作是覆写和替换;而类库定义了进程的某些局部流程,整个系统的流程是由程序员来定义的。框架和类库都有助于减少重复代码。
相关文章推荐
- Java基础编程5:Switch Case
- heart beats
- 浅析App Webview与内嵌web实现交互
- Swift 学习笔记(二)Ios9下访问http://
- Django
- CentOS配置ip[快速配置]
- Python 调试工具 PDB
- 设置Activity全屏与不全屏
- DesiredCapabilities内容详解
- eclipse 报异常 Unhandled event loop exception No more handles
- android之Toast多次提示延时处理
- 数字处理类
- MySQL故障-Slave_SQL_Running: No
- scala 遍历目录 空指针异常和OutOfMemoryError:
- 偏执却管用的10条Java编程技巧
- 面试:十题大数据处理
- UIView基础知识
- ZooKeeper基本原理
- 包装类
- 浅析怎样使用yum安装CDH Hadoop集群