Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-08-14:谈谈你对原型模式的理解? #121

Open
Moosphan opened this issue Aug 14, 2019 · 5 comments
Open

2019-08-14:谈谈你对原型模式的理解? #121

Moosphan opened this issue Aug 14, 2019 · 5 comments

Comments

@Moosphan
Copy link
Owner

No description provided.

@CharlieJude
Copy link

不会,谢谢

@Qiang11
Copy link

Qiang11 commented Aug 14, 2019

用原型类声明创建对象的种类,通过克隆创建对象

@gabyallen
Copy link

通过克隆一个已存在的实例,来"实例化"一个新的实例。

@MrCodeSniper
Copy link

原型模式 在已有对象实例的基础上快速生成与其一样的实例
可以作用于当NEW一个实例代价比较大的时候(例如要经过一次复杂IO后)
抽象原型角色:定义复制实例的接口 Cloneable
具体原型角色:实现cloneable 生成新的实例
使用者角色:提供注册表和获取实例方法 委托clone方法创建新实例

@xiaoxianBoy
Copy link

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

2.使用场景
    (1)类初始化需要消耗比较多的资源,通过原型拷贝可以避免这些消耗
    (2)当new一个对象需要非常繁琐的数据准备等,这时可以使用原型模式
    (3)当一个对象需要提供给其他调用者使用,并且各个调用者都可能修改其值时, 通过原型模式拷贝多个对象供调用者使用,保护性拷贝

Android 源码中例子:
Intent ,Intent的查找与匹配

原型模式实质上就是对象拷贝,要注意深拷贝和浅拷贝问题. 还有就是保护性拷贝,就是某个对象对外是只读的,为了防止外部对这个只读对象修改,通常可以通过返回一个对象的拷贝来实现只读的限制.

优点:
原型模式是在内存中的二进制流的拷贝,性能要比new一个对象好的多.减少了约束.

缺点:
直接在内存中拷贝,构造函数是不会执行的,减少了约

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants