WEB开发网
开发学院软件开发VC 运用设计模式设计MIME编码类 -- 兼谈Template M... 阅读

运用设计模式设计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个接口函数:

上一页  1 2 3 4 5 6 7  下一页

Tags:运用 设计模式 设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接