美文网首页
原型模式(Prototype)

原型模式(Prototype)

作者: kinglong1984 | 来源:发表于2018-10-13 21:45 被阅读4次

    定义

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

    特点

    原型的是一种创建型的设计模式,主用来创建的复杂的对象和构建耗时的实例。通过克隆已有的对象来创建的新的对象,从而节省时间和内存。

    角色

    抽象类或接口,声明具备clone的能力

    具体的原型类

    实现的要点

    实现Cloneable接口

    覆写Object的clone方法

    示例:

    Android中的Intent类,该类也实现了Cloneable接口

    public class Intent implements Parcelable, Cloneable {

    @Override

    public Object clone() {

        return new Intent(this);

    }

    public Intent(Intent o) {

        this.mAction = o.mAction;

        this.mData = o.mData;

        this.mType = o.mType;

        this.mPackage = o.mPackage;

        this.mComponent = o.mComponent;

        this.mFlags = o.mFlags;

        this.mContentUserHint = o.mContentUserHint;

        if (o.mCategories !=null) {

            this.mCategories =new ArraySet(o.mCategories);}

            if (o.mExtras !=null) {this.mExtras =new Bundle(o.mExtras);}

            if (o.mSourceBounds !=null) {this.mSourceBounds =new Rect(o.mSourceBounds);}

            if (o.mSelector !=null) {this.mSelector =new Intent(o.mSelector);}

            if (o.mClipData !=null) {this.mClipData =new ClipData(o.mClipData);

        }

    }

    }

    Uri uri = Uri.parse("smsto:10086");

    Intent shareIntent =new Intent(Intent.ACTION_SENDTO, uri);

    shareIntent.putExtra("sms_body","hello");

    Intent intent = (Intent)shareIntent.clone() ;

    startActivity(intent);

    相关文章

      网友评论

          本文标题:原型模式(Prototype)

          本文链接:https://www.haomeiwen.com/subject/apjaaftx.html