平常心谈软件设计模式(一)

小弟在以前的文章(平台整合系列)中提到了设计模式,设计模式到底是个什么东西,有什么用途呢?小弟打算在该系列中理论联系实际介绍下设计模式的前世今生,用途意义。小弟在这里主要讲解在C++开发中遇见的或者运用到的。

一、两段简单的代码:

代码段一:

struct SUser
{
 CString strUserID ; 
 int nAge ;

 SUser()
 {
  strSystemID  = _T("");
 nAge = 0 ;
 }

 ~SUser()
 {

 }

 SUser(const SUser& other)
 {
  *this = other;
 }

 SUser& operator = (const SUser& other)
 {
  strUserID   = other.strUserID;
  nAge= other.nAge;

  return *this;
 };

};

代码段二:

class CUser
{
  public:
   CUser() ;
   CUser(const CUser& user) ;
   ~CUser() ;

   CUser* Clone() const { return new CUser(*this);};

private:

 CString strUserID ;
  int nAge ;
}

二、两段代码的简单解说:

代码段一 是我们熟悉的C中的结构体定义,不仅定义了结构体内部成员,还定义了结构的operator=重载。

代码段二是我们熟悉的C++的类定义,不仅定义了构造函数和属性还定义copy constructor方法。

三、涉及到的设计模式:

这个的设计模式就是传说中的 原型模式 (Prototype pattern)。结构图如下:

简单解析:ConcretePrototype子类通过拷贝构造函数(位拷贝)或者包括指针、复合对象的拷贝(值拷贝)为Client类提供Prototype操作对象。

Prototype模式通过复制原型(Prototype)而获得新对象创建,即Prototype本身就是对象工程,跟AbstractFactory(抽象工厂模式)的区别就在于它是再不断的复制自己制造出新对象。

四、知识点扩充透析:

浅层拷贝跟深层拷贝。

浅层拷贝(位拷贝):浅层拷贝是指地址的复制,是指将一个对象的内存映像按位原封不动的复制给另一个对象,所有创建出来的对象所指的内存都是同一块地址。典型的例子就是代码片段二,copy constructor拷贝构造函数。

深层拷贝(值拷贝):深层拷贝是指值的复制,是将一个对象的内存内容原封不动的复制到另一块内存中,所有创建出来的对象都有自己独立的内存块。典型的例子就是代码片段一中的copy constructor加上operator=

五、总结:

小弟用直白的话做一个总结:原型模式 就完成了自己的裂变,一个自己变出无数个自己。无数个自己如果是影子那就是浅层拷贝得到的,要是价真货实那就是深层拷贝过。

 

小弟还打算在后续的博客中继续用平常心去聊聊发布订阅者模式,适配器模式等等。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值