我已经为自己的PC桥架构了一个基本的EEPROM刻录机,使用Teensy ++ 2.0,并且它工作得很好,但是当我期望扩展它的兼容性时,我的代码变得相当黑客。我正在寻找一些适当的设计使这些代码可以扩展的建议。我已经在软件设计模式上上了一堂课,但是它在一段时间之前,我正在画一个空白。基本上,这里的用例:EEPROM刻录机的设计模式
我有几个方法,如ReadByte(),WriteByte(),ProgramByte()(对于需要多字节写序列的FlashROMs来编程),EraseChip(),等等。所以基本上我有一个EEPROM纯虚拟基类,它可以通过具体的类来实现我想支持的每种芯片类型。棘手的部分是确定要生成哪个芯片类型的对象。我目前在Teensy ++串行输入端上使用了一个伪终端前端,这是一个带参数的基本命令行类型接口,用于将类似芯片类型的选项发送给Teensy ++。问题是,是否有设计模式(使用C/C++),如Factory Pattern,需要芯片类型的字符串输入(因为这是我从用户处获得的),并返回一个EEPROM对象的正确的派生类型,而不必手动创建一些大的switch语句或类似的东西,我不得不在创建新的芯片派生类时将新芯片添加到列表中?因此,像:
公共常量EEPROM & GetEEPROM(常量的std :: string & ID)
,如果我将它传递字符串“am29f032b”返回到AM29F032B对象的引用,或者如果我通过它字符串“sst39sf040”它返回一个SST39SF040对象的引用,然后我可以调用前面提到的函数,它可以用于指定的芯片。
该代码将在AVR微控制器上运行,所以我不能拥有任何巨大的OOP开销,但是我使用的特定微控制器确实有相对大量的程序闪存和工作RAM,所以它是不像我想用2kb操作,但我必须记住有限的资源。