设计模式- 之我见---创造性(phototype)

本文通过C++实现了一个简单的对象克隆模式示例,展示了如何创建新的对象实例,并利用克隆方法来复制对象。该模式适用于需要创建大量相似对象且希望避免重复赋值操作的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/////////////////////////////////
    
      /*对象创造型模式*/

/////////////////////////////////

#ifndef PT
#define PT
#include "stdafx.h"
class Mission
{
string name;
public:
string * Show();
Mission();
Mission(string );
Mission(Mission &);
Mission *Clone();
virtual~Mission();
};
class PhotoType;

class Client
{
public :
Client();
Client(Mission *);
virtual ~Client();
friend ostream & operator <<(ostream &,Client &);
//protected:
Client * operator()();
private:
string ShowSome();
Mission *m;
};
class PhotoType :public Client
{
public:
Client *Clone();
};
#endif
/////////////////////////////////

/*说明:
     这里phototype是个照片
样的,把对象元素映下来,重新生
成更多的属性未赋值的新对象,
之后再交给其他模式加工*/


/*感觉很鸡肋*/
/////////////////////////////////








// PhotoType.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "PhotoType.h"

Mission::Mission()
{}
Mission::~Mission()
{
}
Client::Client()
{
 
}
Mission::Mission(string s)
{
name = s;
}
Mission::Mission(Mission &m)
{
this->name = m.name ;
}
Mission *Mission::Clone()
{
return new Mission(*this);
}
Client::Client(Mission *m)
{
this->m =m;
}
//Client * Client::operator()(){

// return new Client(p->MakeMission());}

Client::~Client()
{
if (m!=NULL)
delete m;
}
string * Mission::Show()
{
return &name;
}
string Client::ShowSome()
{
return *(m->Show());
}
ostream & operator <<(ostream &o,Client &c)
{
o<<c.ShowSome();
return o;
}

Client *  Client::operator()()
{
return new Client(m);
}
Client *PhotoType::Clone()
{
return (*this)();
}
int _tmain(int argc, _TCHAR* argv[])
{
Client c(new Mission("asd"));
    cout<<c;
//PhotoType p;
cout<<*c();
//p.Clone();
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值