资讯专栏INFORMATION COLUMN

原型模式(Prototype)

kycool / 2777人阅读

摘要:原型模式一一般实现创建对象调用输出缺点如需大量创建某对象,对象创建效率,性能低创建对象收访问权限的限制二原型模式定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象条件实现接口重写的方法浅拷贝与深拷贝浅拷贝只拷贝对象中的基本数据

原型模式

一.一般实现 1.1 创建对象
    public class Entity {
        public Entity(){
            System.out.println("create entity ...");
        }
    }
1.2 调用
    public static void main(String[] args) {
        new Entity();
    }
1.3 输出
    create entity ...
1.4 缺点

如需大量创建某对象,对象创建效率,性能低.

创建对象收访问权限的限制.

二.原型模式 2.1 定义

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

2.2 条件

实现Cloneable接口.

重写Object的clone方法.

2.3 浅拷贝与深拷贝

浅拷贝:只拷贝对象中的基本数据类型和String类型.

深拷贝:可拷贝对象中的对象类型,集合类型(集合类基本都有自己的clone方法).

三.代码实现 3.1 创建接口
    public interface IEntity extends Cloneable{
        Object clone();
    }
3.2 创建对象
    public class Entity implements IEntity{
        public Entity(){
            System.out.println("create entity ...");
        }
        @Override
        public Object clone() {
            Entity entity = null;
            try {
                entity = (Entity) super.clone();
            } catch (CloneNotSupportedException e) {
                e.printStackTrace();
            }
            return entity;
        }
    }
3.3 调用
    public static void main(String[] args) {
        IEntity entity1 = new Entity();
        IEntity entity2 = (IEntity) entity1.clone();
        System.out.println(entity1.hashCode());
        System.out.println(entity2.hashCode());
    }
3.4 输出
    create entity ...
    1956725890
    356573597
四.源码
https://github.com/Seasons20/DisignPattern.git

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69411.html

相关文章

  • JS创建对象模式及其对象原型链探究(五):组合使用构造函数模式原型模式

    摘要:组合使用构造函数模式和原型模式构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性。创建对象组合使用构造函数模式和原型模式指向构造函数,这里要将其恢复为指向构造函数。另外,这种混合模式,还支持向构造函数传递参数。 组合使用构造函数模式和原型模式 构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性。 创建自定义类型的最常见方式,就是组合使用构造函数模式和原型模式。 ...

    Shimmer 评论0 收藏0
  • JavaScript面向对象的程序设计

    摘要:目录导语理解对象和面向对象的程序设计创建对象的方式的继承机制原型对象原型链与原型对象相关的方法小结导语前面的系列文章,基本把的核心知识点的基本语法标准库等章节讲解完本章开始进入核心知识点的高级部分面向对象的程序设计,这一部分的内容将会对对象 目录 导语 1.理解对象和面向对象的程序设计 2.创建对象的方式 3.JavaScript的继承机制 3.1 原型对象 3.2 原型链 3.3 与...

    gitmilk 评论0 收藏0
  • 读《javaScript高级程序设计-第6章》之封装类

    摘要:创建构造函数后,其原型对象默认只会取得属性至于其他的方法都是从继承来的。上图展示了构造函数的原型对象和现有的两个实例之间的关系。所有原生的引用类型都在其构造函数的原型上定义了方法。 第6章我一共写了3篇总结,下面是相关链接:读《javaScript高级程序设计-第6章》之理解对象读《javaScript高级程序设计-第6章》之继承 工厂模式 所谓的工厂模式就是,把创建具体对象的过程抽象...

    seal_de 评论0 收藏0
  • <笔记>面向对象的设计模式

    摘要:创建对象什么是工厂模式封装一个函数用来创建对象并给对象中特定的属性添加值优点是可以循环调用缺点是每一个创建出来的对象都是独立的不能确定它是哪个类型的对象或者说是想要将哪个对象作为模板进行创建每个对象都是独立的并且指向的不能辨别基于哪个对象为 创建对象 什么是工厂模式 ? 封装一个函数 , 用来创建对象并给对象中特定的属性添加值 , 优点是可以循环调用 , 缺点是每一个创建出来的对象都是...

    warkiz 评论0 收藏0
  • JS创建对象模式及其对象原型链探究(一):Object模式

    摘要:对象是由构造函数创建而成的,所以它的指向原型链图对象的原型链图对象属性引用的匿名函数的原型链图 Object模式 创建一个Object实例,再为其添加属性和方法。 这是创建自定义对象最简单的方式。 1.创建对象 // 创建person对象 var person = new Object(); person.name = Mike; person.age = 20; person.jo...

    李义 评论0 收藏0
  • JS学习笔记(第6章)(面向对象之创建对象)

    摘要:就是通过调用构造函数而创建的那个对象实例的原型对象。创建要返回的对象可以在这里定义私有变量和函数添加函数注意寄生构造函数中是返回对象注意寄生构造函数中是注意,在以这种模式创建的对象中,除了使用方法之外,没有其他办法访问的值。 一、工厂模式 function createPerson(name, age, job) { var o = new Object(); o.na...

    tangr206 评论0 收藏0

发表评论

0条评论

kycool

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<