这是什么模式?

Bobby136 2006-05-17 09:37:09
class ClassA;

class BaseClassA : public IRefCounted
{
public:
BaseClassA() : m_strSource( NULL ),
{
}
ClassA* Instance()
{
return new ClassA( this );
}
public:
CONST CHAR* m_strSource;
};

class ClassA
{
public:
ClassA( BaseClassA* pBase ) : m_pBase( pBase )
{
}
protected:
BaseClassA* m_pBase;
};

什么模式,用意何在,望高人赐教
...全文
647 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
loboychen 2006-11-02
  • 打赏
  • 举报
回复
仅从上面的代码,无法说不清楚是什么模式,关键是我们要知道他要做什么。

因为它是什么模式,不仅需要看它的类结构图所显示的功能,而且还要看它的用意是什么。同样的类结构图,可以表现出不用的用意,也就是用了不同的模式。

设计模式中充满了好多,类结构图类似,但是职能不同的模式。请仔细参看书上的说明。
ibios 2006-10-26
  • 打赏
  • 举报
回复
和行为模式里的备忘录(memento)很像
hziee_ 2006-10-16
  • 打赏
  • 举报
回复
模式设计有什么实际的应用?
愿闻其详.
wanglovec 2006-09-25
  • 打赏
  • 举报
回复
晕了,没有完整点的代码??
Bobby136 2006-05-18
  • 打赏
  • 举报
回复
谢谢楼上的,好像是工厂方法,不过其中的奥妙还是没有完全理解
h_cpp 2006-05-18
  • 打赏
  • 举报
回复
是对ClassA的对象。。。
h_cpp 2006-05-18
  • 打赏
  • 举报
回复
工厂模式不是这样的。。。楼上可以看下那本书去
这个不能说是什么模式,可以说算是个技巧
搂主只贴出了部分代码,还有些主要的信息没有贴出
BaseClassA的主要意思应该是:
对于 同一个m_strSource这块buffer,可以关联多个ClassA的对象
并对m_strSource有引用计数
arthasrui 2006-05-18
  • 打赏
  • 举报
回复
这个是factory method

BaseClassA中ClassA* Instance()这个method的作用是生成一个和该类实例相联系的一个ClassA对象,该ClassA对象能和该BaseClassA对象交互,达到一个1V1的动态映射
Bobby136 2006-05-18
  • 打赏
  • 举报
回复
代理模式?好像不像
h_cpp 2006-05-18
  • 打赏
  • 举报
回复
现在的代码说是抽象工厂还差不多,呵呵,只是将抽象工厂和引用计数合用了
Bobby136 2006-05-18
  • 打赏
  • 举报
回复
上面的有点问题,应该是
virtual Class* Instance()
{
return new ClassA( this );
}

引用计数可以不要
Bobby136 2006-05-18
  • 打赏
  • 举报
回复
难道下面就是传说中的抽象工厂?

class Class;

class BaseClass : public IRefCounted
{
public:
BaseClass()
{
}
virtual Class* Instance() = 0;

public:

};

class Class
{
public:
Class() {}
};


class ClassA;

class BaseClassA : public BaseClass
{
public:
BaseClassA()
{
}
virtual ClassA* Instance()
{
return new ClassA( this );
}

};

class ClassA
{
public:
ClassA( BaseClassA* pBase ) : m_pBase( pBase )
{
m_pBase->AddRef();
}
protected:
BaseClassA* m_pBase;
friend class BaseClassA;
};

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧