原型模式(Prototype)

2018-10-13  本文已影响4人  kinglong1984

定义

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

特点

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

角色

抽象类或接口,声明具备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);

上一篇下一篇

猜你喜欢

热点阅读