将抽象部分与它的实现部分分离,使它们都可以独立地变化。考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度。当然了,两者之间有标准的接口。这样设计,不论是对于计算机,还是操作系统都是非常有利的。
在单片机中,该模式用的很少,大概如下:
typedef struct _CPU {
void (*assemble_cpu_imp)( struct _CPU* cpu );
int type;
} CPU;
static void assemble_cpu_imp( CPU *cpu )
{
printf( "%d cpu!\n", cpu->type );
}
typedef struct _Computer {
void (*assemble_cpu)( CPU *cpu );
} Computer;
static void assemble_cpu( CPU *cpu )
{
cpu->assemble_cpu_imp( cpu );
}
#define LOWEND_TYPE 0x01
#define HIGHEND_TYPE 0x02
int main( void )
{
CPU cpu1;
cpu1.type = LOWEND_TYPE;
cpu1.assemble_cpu_imp = assemble_cpu_imp;
CPU cpu2;
cpu2.type = HIGHEND_TYPE;
cpu2.assemble_cpu_imp = assemble_cpu_imp;
Computer com1;
com1.assemble_cpu = assemble_cpu;
com1.assemble_cpu( &cpu1 );
com1.assemble_cpu( &cpu2 );
Computer com2;
com2.assemble_cpu = assemble_cpu;
com2.assemble_cpu( &cpu1 );
com2.assemble_cpu( &cpu2 );
}