android中的原型模式,Android 设计模式之原型模式

简介:在系统中要创建大量的对象,这些对象之间具有几乎完全相同的功能,只是在细节上有一点儿差别

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

example 1:

我们需要一张Bitmap的几种不同格式:ARGB_8888、RGB_565、ARGB_4444、ALAPHA_8等。那我们就可以先创建一个ARGB_8888的Bitmap作为原型,在它的基础上,通过调用Bitmap.copy(Config)来创建出其它几种格式的Bitmap

/*** Tries to make a new bitmap based on the dimensions of this bitmap,

* setting the new bitmap‘s config to the one specified, and then copying

* this bitmap‘s pixels into the new bitmap. If the conversion is not

* supported, or the allocator fails, then this returns NULL. The returned

* bitmap initially has the same density as the original.

*

*@paramconfig The desired config for the resulting bitmap

*@paramisMutable True if the resulting bitmap should be mutable (i.e.

* its pixels can be modified)

*@returnthe new bitmap, or null if the copy could not be made.*/

public Bitmap copy(Config config, booleanisMutable) {

checkRecycled("Can‘t copy a recycled bitmap");

Bitmap b=nativeCopy(mNativeBitmap, config.nativeInt, isMutable);if (b != null) {

b.setPremultiplied(mRequestPremultiplied);

b.mDensity=mDensity;

}returnb;

}

另外一个例子就是Java中所有对象都有的一个名字叫clone的方法

/*** Copy constructor.*/

publicIntent(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 = newBundle(o.mExtras);

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

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

}if (o.mClipData != null) {this.mClipData = newClipData(o.mClipData);

}

}

@OverridepublicObject clone() {return new Intent(this);

}

原文:http://www.cnblogs.com/suncan/p/4331859.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值