zoukankan      html  css  js  c++  java
  • 设计模式【1】:原型模式【创建对象】

    面试期间,总是有面试官问到关于设计模式的问题,尽管我们在敲代码的时候不经意间会用到设计模式,可是在面试管面前我们还是说不出。在这我把看到的一些设计模式记录下来,加深自己的印象,也为了更好的运用这些设计模式。

    【原型模式】

    原型模式的官方定义:“使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象”。

    简单来理解就是依据这个原型创建新的对象,这样的创建是指深复制,得到一份新的内存资源。而不是一个新的指针引用。

    官方定义总是这么坑爹,让人那么琢磨不透。事实上理解了,你会说,就这也算是一个设计模式。那么咱们就白话说这样的设计模式:原型模式就是针对深复制来说的,定义能够这么去理解。

    一个对象  Dog * dog = new Dog; 
    那么你想得到一个dog1 .
    能够这样来:Dog *dig1 = [dog copy];
    那么如今dog和dog1是两个独立的个体

    这就是所谓的原型模式。尽管看到后总感觉不是必需弄成一个设计模式。可是还要感谢这个设计模式的提出者。

    【关于深复制说两句】

    像NSString、NSDictionary这些类。本身已经实现了copyWithZone:(NSZone *)zone方法。直接使用如[NSString copy]调用就可以。在复制后得到的副本,又能够分为可变副本(mutable copy)和不可变副本(immutable copy)。通常在NSCopying协议规定的方法copyWithZone中返回不可变副本,在NSMutableCopying的mutableCopyWithZone方法中返回可变副本。然后调用copy和mutableCopy方法来得到副本。


  • 相关阅读:
    CF493D Vasya and Basketball (二分)
    CF734C Anton and Making Potions (二分)
    CF785C Anton and Fairy Tale (二分)
    HDU3047 Zjnu Stadium (带权并查集)
    POJ1795 DNA Laboratory (状压dp)
    BZOJ.3524.[POI2014]Couriers(主席树)
    BZOJ.3932.[CQOI2015]任务查询系统(主席树 差分)
    洛谷.3835.[模板]可持久化平衡树(fhq treap)
    SDOI2013 R1 Day2
    洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7372235.html
Copyright © 2011-2022 走看看