工厂模式与建造者模式区别,设计模式创建型模式
原型模式什么是原型模式? 原型模型是创造型模型。 如果您可以通过已经存在的原型对象来确定要创建的对象的类型,则可以使用它。 简而言之,使用原型模式,我们是通过clone已经存在的实例来完成的
在Java中,创建实例需要大量的成本和资源。 如果有一种只通过复制现有对象就可以避免创建对象的方法,这是为什么呢? 原型模型提供了这个解决方案。
原型模式什么时候使用? 要更改现有对象以更新指定对象。 加速大型动态负载类实例化的原型模型示例汉普斯特德蛋糕公司是伦敦非常有名的提供质量的生日奶酪蛋糕公司。
对于需要根据收件人姓名定制的每个芝士蛋糕,配料和味道都是一样的。
蛋糕公司之所以接到大量订单也很难送货,是因为为每个订单指定配料和制作奶酪蛋糕都花了太多时间。 他们不能做足够的蛋糕。
如果只是做一个蛋糕,然后多次通过clone,为每个蛋糕定制收件人的名字呢?
在此示例中,CakeStore类是客户端。 客户端调用prepareCake ()方法来创建多个原型实例。
cake.javapackageorg.Byron 4j.cookbook.design pattern.prototype; /**蛋糕的接口类型clone */publicinterfacecakeextendscloneable {/* *蛋糕* @ return */publiccakepreparecake (); } cheese cake.javapackageorg.Byron 4j.cookbook.design pattern.prototype; import lombok.allargsconstructor; import lombok.Builder; import lombok.Data; @ allargsconstructor @ data @ builderpublicclasscheesecakeimplementscake {/* * *糖果*/private String sugar; /** *黄油*/private String butter; /**奶酪*/private String cheese; /** *用户名*/private String name; @Override public Cake prepareCake () { Cake cake=null; /** *克隆所在的实例*/try{cake=(cake ) super.clone ); } catch (clonenotsupportedexceptione ) { e.printStackTrace ); } return cake; } cakestore.javapackageorg.Byron 4j.cookbook.design pattern.prototype; publicclasscakestore { publicstaticvoidmain (string [ ] args ) ) cheese cake cheese cake=cheese cake.builder ).sugar ' ) System.out.println ('已存在的实例:' cheeseCake ); //原型模式下多个蛋糕cheese cake cheese cake1=(cheese cake ) cheeseCake.prepareCake ); cheesecake1.setname(Byron ); System.out.println ('原型模式的第一个实例:' cheeseCake1); cheese cake cheese cake2=(cheese cake ) cheeseCake.prepareCake ); cheesecake2.setname(Joy ); System.out.println ('原型模式的第二个实例:' cheeseCake2); }