我们初入软件,在相当的一段时间内,我们的工作都仅限于在别人的代码的基础上增增减减,,但是永远乐于增增减减的人是不能进步的。我们常说,软件架构是一个很高深的东西,但是,软件大牛们也是我们一样起步的,只是后来人家做出了改变,借用我好朋友泉哥的一句话:再NB的人,也有苦逼的青春。
我的想法,先走一步,错了再说,让我们从苦逼的青春开始吧!
在人力相对充足的软件企业中,项目中可见代码的部分都是业务性质较多,框架类的东西,不可见,不可改,有时候被封装成库,总之,不是你在SVN上那些东西,有时候我们叫这些代码为底层代码。
软件大牛往往为你创建了一个项目模板,你只需要在每个新的项目的增增减减,但若你留心一些,也能将其中原理体会一二。
我曾经在华为对一个东西百思不得其解,程序运行过程竟然需要头文件(.h文件),我当时都怀疑架构是不是自带编译器重新编译,当然我不相信华为有这个实力,拿到底层的代码后,我傻了,方法竟然是把头文件直接分析内容,然后偏移虚函数表,调用虚函数的过程,按我当时的想法,这种作法太下流了。
其实,上一个事情我想说的是,需要你去琢磨,才有明白的可能。
现在步入正题,我介绍一种简单的软件架构。
框架代码:1、父类Application
Application
{
Void virtual run()
Virtual ~Application();
};
2、main函数
main()
{
Extern Application* pApp;
pApp->run();
delete pApp;
}
业务代码:
1、子类Work,一个子类对象
Work work;
Application* pApp;
Work
{
Virtual void run();
}
框架中的重点之处,
1、run()和析构函数是虚函数(框架己定)
2、继承(代码中定义)
3、一个被其它源文件使用的全局变量。(代码中实现)
4、框架实现了只需要关心子类中run()对业务逻辑的处理正确即可。