【设计模式】原型模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/as15932641664/article/details/82184319

  原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象


      哆啦A梦!!!小夫他哥给小夫买了一个坦克的玩具,不仅可以远程操控,还会发射炮弹呢!我也想要,哇哇哇!!!哆啦A梦:真是拿你没办法。

      “复制机”,这个可以帮助你复制出任何你想要的玩具,只要你把坦克玩具的原型拿过来,我就能给你复制出成千上万一模一样的坦克出来,“真的吗,我这就去”。于是,大雄花了一个月的零花钱借来小夫的坦克。当哆啦A梦将坦克原型放入复制机的一刹那,在机器的后面源源不断的开出与小夫坦克一模一样的玩具,最后由于太多溢出了院子。

      复制出很多很原型一模一样的“身外身”来。在设计模式中也存在一个类似的模式,可以通过一个原型对象克隆出多个一模一样的对象,这就是原型模式

  结构图


  浅复制

      被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。

      简单的说,在浅复制中,当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制。

  深复制

      无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象。

      简单的说,深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。

      《长城》这部电影有一种怪物叫饕餮,时隔60年成千上万的饕餮就会向人类发起一次大规模的进攻。在这成千上万的饕餮中有一个块头巨大的首领,正是这个它创造了这些怪物,首领不断的繁衍(复制),并通过头上的触角向它的孩子传递信号。

      男主最后将一颗炸药完美的送入首领嘴中,随着首领的死亡,成千上万的饕餮顿时失去了信号,就像石头一样待在原地停止了进攻,人类获得了胜利。

     上面的例子中所有的饕餮的引用都指向它们的首领,首领强大,它们强大,首领死亡,它们死亡,随着首领的改变而改变。 就像我们所说的浅复制;

      但如果首领复制它们时将引用变量指向复制过的新对象---深复制,也就是引用“饕餮1”,“饕餮1”引用“饕餮2”,2引用3,以此类推,那么我想最后胜利的就不是人类了!

     

猜你喜欢

转载自blog.csdn.net/as15932641664/article/details/82184319