原型模式
问题引入
唐僧师徒历经九九八十一难从西天取得真经,回到唐朝师徒遇到一个问题,经书只有一套,如果让所有人公用一套经书,不方便阅读,不利于管理,咋办?再去几次西
天多取套经书?显然,最简单的办法是找人抄录几份,抄书比去西天取经容易得多,代价也小得多。
在软件系统中,有些对象的创建就像西天取经一样,麻烦、耗时、消耗资源。如果有多个地方需要使用这种对象怎么办?能不能像抄书一样,从一个对象复制出多个一
样或相似的对象,供需要使用的地方使用?
定义
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。
特点
采用原型模式,创建相同或相似的对象将变得非常简单、高效和节省资源,并且使用者无需了解对象创建的具体细节。
使用场景
1) 资源优先的场景。
2) 创建对象的代价比较大的场景。
3) 通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。
4) 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。
5) 在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。
6) 对象之间相同或相似,即只是个别的几个属性不同的时候。
7) 对象的创建过程比较麻烦,但复制比较简单的时候。
评论0