no pains no gains

常用链接

统计

最新评论

2005年10月13日 #

面向对象设计过程中的设计模式

面向对象设计过程中的设计模式

一般通过以下信息来描述设计模式:

l           模式的名字

l           模式的意图

l           激发模式动机的“设计压力”

l           缓解这些压力的解决方案

l           实现该解决方案所需的类

l           解决方案类中的责任和协作

l           导致有效设计的指导原则

l           原代码例子或原代码模板

l           对相关设计模式的交叉引用

    设计模式名字本身是一个抽象,它传达关于其适用性和意图的有意义的信息;设计压力描述和模式将被应用到的软件部位相关的数据、功能和行为需求,压力也限制了设计将被导出的方式,本质上来说,设计压力描述使得设计模式可以被应用所必须存在的环境和条件模式特征指明了设计中可以被调整以使得模式能够适应一系列问题的属性,这些属性表示了设计中可以被搜索(通过数据库)以使得合适模式能够被找到的特征。从中也能看出,软件复用中的一个关键问题是如何在成百上千候选模式中找到合用的模式在设计阶段一般采用的模式形式主要是“导致有效设计的知道原则”,通过使用在特定任务或问题下适用的设计模式,在原则的指导下可以帮助设计者在OOD的过程中尽量使用这些广为使用并能导致优秀设计的思维方式进行设计。

posted @ 2005-10-13 16:13 paradise 阅读(455) | 评论 (0)编辑 收藏

2005年10月12日 #

一个显示当前时间的面板程序,当在主窗口中点击视图菜单项的子菜单TimeBorad时,跳出时间显示。

// TimeBoard.cpp

#include "stdafx.h"
#include "ThreadTestB.h"
#include "TimeBoard.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTimeBoard

CTimeBoard::CTimeBoard()
{
}

CTimeBoard::~CTimeBoard()
{
}


BEGIN_MESSAGE_MAP(CTimeBoard, CStatic)
 //{{AFX_MSG_MAP(CTimeBoard)
 ON_WM_TIMER()
 ON_WM_CREATE()
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CTimeBoard::OnTimer(UINT nIDEvent)
{
 CTime time=CTime::GetCurrentTime();
 CString s;
 s.Format("it is %2d:%2d:%2d now.",time.GetHour(),time.GetMinute(),time.GetSecond());
 SetWindowText(s);

 CStatic::OnTimer(nIDEvent);
}

int CTimeBoard::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CStatic::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 SetTimer(0,5000,NULL);

 return 0;
}

posted @ 2005-10-12 23:07 paradise 阅读(400) | 评论 (0)编辑 收藏

仅列出标题