zoukankan      html  css  js  c++  java
  • java设计模式-原型模式

      第一次好好的看设计模式,可能有不对的地方,大佬们可以下面指出,感谢!

      ----------- 分割线 ----------

      简历复印——原型模式

      简历复印,一个复制过程,原型模式即一个复制过程。

    UML图:

    Prototype:抽象接口,定义一个可以复制自己的方法;
    ConcretePrototype1:Prototype的具体实现;
    ConcretePrototype2:Prototype的具体实现;
    Client:具体调用


    使用场景:在代码中需要复制一个对象,尤其是深复制,不可使用object.clone的时候,原型模式派上用场;浅复制,不能让外部修改对象里面属性时,可使用浅复制。

    Prototype类:

    实现类:

    程序调用:

    这个位置克隆的是copyOne,可以看出每次都是不同的copyOne,实现了原型复制;

    克隆copyTwo:

    哪个实现类克隆,就是克隆哪个对象,简单原型模式这样就实现了。

    升级版——Cloneable :

    程序调用:

    这个时候有个问题,如果我的简历对象里面还包含了一个对象呢,也能复制过去吗?原型模式中的浅复制和深复制:浅复制——只复制对象本身属性,不复制锁包含对象;深复制——不仅复制了属性,而且复制了里面所包含对象(当然需要自己实现);先到这了,饿了,吃饭了,回头补充深复制和浅复制。

     浅复制,简历类里面新增一个履历类:

    这时候程序调用:

    发现只需要修改了履历这个对象,其他类里面的履历对象属性跟着改变,原因是浅复制只是复制了对象里面所包含对象的引用,都是同一个对象,所以哪里改变了,就会都跟着改变!

    深复制:

    Experience类也实现Cloneable ,修改简历类的clone方法:

    程序调用:

    这时候,第一个简历里面的履历类并没有被更改,完成深复制。

  • 相关阅读:
    科技小论文
    一线架构—细化架构
    python20.04.10
    软件架构总结
    信息领域热词分析
    架构即未来阅读笔记二
    构架即未来阅读笔记一
    科技小论文之软件质量
    Pre-architecture的需求
    软件质量
  • 原文地址:https://www.cnblogs.com/ghsy/p/11101961.html
Copyright © 2011-2022 走看看