什么是科学?
普通人的回答可能是科学包含数理化生等学科,而不包含艺术音乐之类的学科
哲学家所追寻的回答而不是上述这种罗列式的回答,而是回去探寻这些学科的共同特征,也就是使科学得以成为科学的东西是什么?
科学的特征?下面是一些人的解释
如何赋予派生类创建适当对象的责任。(how derived classes can be given the responsibility of creating appropriate objects.)
工厂方法模式(Factory Method Pattern)
:
应用场景:
比如,C++常常采用下面的方式创建对象:
1 | SomeClass someClassObject_1 = SomeClass(); //栈中分配 |
ostream 类是从ios派生而来的,而ios则是从ios_base派生来的。 ios_base类封装了C++标准中的流输入输出中不依赖于读写的数据的类型的基本信息,如格式化信息、异常状态、事件回调函数等,所以很多的格式控制都需要。
VFS(虚拟文件系统)四大对象:struct super_block 超级块、struct inode 索引节点、struct dentry 目录项、struct file 文件对象
VFS采用的是面向对象的设计思想,使用一簇数据结构来代表通用文件对象。所以内核中的数据结构都使用C结构体实现。
超级块super_block对象
,代表一个具体的已安装文件系统。索引节点inode对象
,代表一个具体文件。目录项dentry对象
,代表一个目录项,是路径的一个组成部分。文件file对象
,代表有进程打开的文件。每个主要对象中都包含一个操作对象,这些操作对象描述了内核针对主要对象可以使用的方法:
super_operations对象
:包含内核针对特定文件系统所能调用的方法。inode_operations对象
:包含内核对特定文件所能调用的方法。dentry_operations对象
:包含内核对特定目录所能调用的方法。file_operations对象
:包含进程针对已打开文件所能调用的方法。操作对象作为一个指针结构体被实现,此结构体中包含指向操作其父对象的函数指针。对于其中许多方法来说,可以继承使用VFS提供的通用函数,如果通用函数提供的基本功能无法满足需要,就必须使用实际文件系统的独有方法填充这些函数指针,使其指向文件系统实例。
Update your browser to view this website correctly. Update my browser now