还需要定义一个创建硬盘对象的类(即:工厂)。工厂类根据参数决定创建哪家供应商的硬盘对象。 4、实现硬盘对象创建 参与者: (1)Product: HardDisk 定义硬盘对象的接口 (2)Concrete Product: SeagateHardDisk, ToshibaHardDisk 实现不同供应商的硬盘 (3)SimpleFactory: HardDiskFactory 根据参数,创建不同供应商的硬盘...
在我们的印象中,设计模式是由面向对象的语言(C++、JAVA)才能完成的,而 C 语言是面向过程的语言,不能实现设计模式。但C 语言中有函数指针、回调函数等机制,使用这些机制便能写出面向对象的优秀程序。 LINUX操作系统,采用 C 语言写的,但是里面很多模块实现都是通过面向对象的设计方式实现的,这也是很多人初看 Linux ...
在C++中实现设计模式主要是通过virtual关键字修饰的虚函数来实现的,在C语言中没有这个操作,但是我们可以通过指针函数加结构体进行实现。我们先简单了解一下指针函数: typedefvoid(*pfunc)(int);//此处定义了pfunc这个函数指针//定义一个test_func函数,与pfunc的返回类型和参数是一致的,只有名字不同//若不一致则不...
下一步是创建工厂类 shape_factory_t ,实现它的动态注册功能,提供给用户使用。 3.3 C语言实现 1、创建 shape_t 接口 /* shape.h */#ifndefSHAPE_H#defineSHAPE_H#include"awtk.h"BEGIN_C_DECLStypedefstruct_shape_tshape_t;typedefstruct_shape_vtable_tshape_vtable_t;typedefshape_t*(*shape_create_t)...
简单工厂方法定义一个用于创建对象的类,该类接受一个参数,通过参数决定创建不同的对象。 GOF并没有把简单工厂方法定义为23种设计模式之一,可以认为简单工厂方法是工厂方法的简化形式。 为了体现简单工厂方法和工厂方法的区别和联系,此处把简单工厂方法先单独讲一下。