原型模式本质上说就是对当前数据进行复制。就像变戏法一样,一个鸽子变成了两个鸽子,两个鸽子变成了三个鸽子,这三个鸽子都是不同的对象,就这么一直变下去。在变的过程中,我们不需要考虑具体的数据类型。为什么呢?因为不同的数据有自己的复制类型。
抽象的结构体跟之前的建造模式的结构体一样。
typedef struct _Computer {
int type ;
struct _Computer *( *computer_copy )( struct _Computer *p ) ;
} Computer;
复制的函数具体实现如下:
Computer *computer_copy( Computer *computer )
{
Computer *p = ( Computer * )malloc( sizeof( Computer ) );
assert( NULL != p );
memmove( p, computer, sizeof( Computer ) );
return p;
};
Computer *mclone( Computer *computer )