运用设计模式设计MIME编码类 -- 兼谈Template Method和Strategy模式的区别
2007-03-16 21:56:45 来源:WEB开发网核心提示: · Email客户端程序· 乱码察看程序· 图片等二进制对象存入XML文件设计目标如下:· 可重用· 易使用· 易扩充三、设计过程本部分分为下面3节,注意它们不是并列的3种设计方案,运用设计模式设计MIME
· Email客户端程序
· 乱码察看程序
· 图片等二进制对象存入XML文件
设计目标如下:
· 可重用
· 易使用
· 易扩充
三、设计过程
本部分分为下面3节,注意它们不是并列的3种设计方案,而是达到趋于合理的设计的思考过程:
· 设计成仅提供方法的Utility
· 设计成使用Template Method模式的String Class
· 设计成使用Strategy模式的String Class
1、设计成仅提供方法的Utility
首先跳进我脑子的想法就是设计成Utility(仅仅提供方法的类),我想可能是我受C影响太大的缘故吧。
它的接口会是什么样子呢?差不多象
bool UMime::Encode(unsigned char * outTargetBuf,
int & outTargetBufLen,
const unsigned char * const inSourceBuf,
int inSourceBufLen);
bool UMime::Decode(unsigned char * outTargetBuf,
int & outTargetBufLen,
const unsigned char * const inSourceBuf,
int inSourceBufLen);
吧。不行,为了满足易使用要求,应该支持CString类型的buffer吧,再增加2个接口函数bool UMime::Encode(CString & outTargetStr,CString & inSourceStr);
bool UMime::Decode(CString & outTargetStr,CString & inSourceStr);
这样以来,UMime一共包括4个接口函数。好像还不错?高兴得太早了。因为将来应用中很可能出现CString和unsigned char *协同工作的情形。比如应用从XML文件中读出一个字符串放到一个CString型变量中,而这个字符串是一个Bmp图片的MIME编码,它解码过后自然应放到unsigned char *的buffer中。所以我们还要增加下面4个接口函数:
更多精彩
赞助商链接