当前位置: 首页 > news >正文

南宁建站模板源码360免费建站系统

南宁建站模板源码,360免费建站系统,泰安招聘信息最新招聘2021,网站开发法律可行性创造型模式-原型模式 创建重复对象-场景体验解决方案#xff08;原型模式#xff09;原型模式定义 创建重复对象-场景体验 今天来一个大客户#xff0c;他要求帮他下100个订单。每个订单除了用户ID#xff0c;和用户名不同之外#xff0c;其他个人信息完全相同。 订单类 … 创造型模式-原型模式 创建重复对象-场景体验解决方案原型模式原型模式定义 创建重复对象-场景体验 今天来一个大客户他要求帮他下100个订单。每个订单除了用户ID和用户名不同之外其他个人信息完全相同。 订单类 public class Order{//id 主键无实际意义private String id;//订单编号private String orderNo;//产品编码private String productNo;//产品名称private String productName;//产品类型private String productType;//订单购买数量private Integer num;//用户idprivate String userId;//用户名称private String userName;//用户电话号码private String tel;//用户住址private String address;//购买店铺用于识别改订单是在哪一个店铺下的单。private Store store; } //商店类 public class Store{//店铺idprivate String id;//店铺名称private String name;//店铺负责人private String head;//店铺地址private Strign address; }制造数据 public void copyOrder(){//专卖店Store store new Store();store.setId(dp001);store.setName(地球村专卖店);store.setHead(村长);store.setAddress(东风东街001号);//第一个订单Order order new Order();order.setId(111111);order.setOrderNo(dd001);order.setProductNo(cp001);order.setProductName(产品1);order.setProductType(工具类);order.setNum(50);order.setUserId(U001);order.setUserName(用户1);order.setTel(17660887362);order.setAddress(地球村-种花家);order.setStore(store);//第二个订单Order order1 new Order();order.setId(111112);order.setOrderNo(dd002);order.setProductNo(order.getProductNo());order.setProductName(order.getProductName());order.setProductType(order.getProductType());order.setNum(order.getNum());order.setUserId(U002);order.setUserName(用户2);order.setTel(order.getTel());order.setAddress(order.getAddress());order.setStore(store);...还要100个 }上面的代码就是现状当然也可以使用构造方法但是过程都是一样的需要大量重复的代码。非常不美观。 解决方案原型模式 原型模式可以理解为将一个完整对象的复制创建过程抽离成一个方法使我们要创建一个相同对象的时候不需要再依次赋值。 模拟底层实现 public class Order{//id 主键无实际意义private String id;//订单编号private String orderNo;//产品编码private String productNo;//产品名称private String productName;//产品类型private String productType;//订单购买数量private Integer num;//用户idprivate String userId;//用户名称private String userName;//用户电话号码private String tel;//用户住址private String address;//购买店铺用于识别改订单是在哪一个店铺下的单。private Store store;public Order clone(){Order order1 new Order();order1.setId(this.id);order1.setOrderNo(this.orderNo);order1.setProductNo(this.productNo);order1.setProductName(this.productName);order1.setProductType(this.productType);order1.setNum(this.num);order1.setUserId(this.userId);order1.setUserName(this.userName);order1.setTel(this.tel);order1.setAddress(this.address);order1.setStore(this.store);return order1;}}我们使用的时候 public void copyOrder(){//专卖店Store store new Store();store.setId(dp001);store.setName(地球村专卖店);store.setHead(村长);store.setAddress(东风东街001号);//第一个订单Order order new Order();order.setId(111111);order.setOrderNo(dd001);order.setProductNo(cp001);order.setProductName(产品1);order.setProductType(工具类);order.setNum(50);order.setUserId(U001);order.setUserName(用户1);order.setTel(17660887362);order.setAddress(地球村-种花家);order.setStore(store);//第二个订单Order order1 order.clone();order.setId(111112);order.setOrderNo(dd002);order.setUserId(U002);order.setUserName(用户2);...之后的100个相同 }通过上述方法使原本赋值操作的工作量大量减少只需要关注自己个性化的赋值即可。 上面的clone方法是完全我自己写的用来模拟的Java为我们提供了更好的实现不需要我们去做上面无聊的赋值工作 只需要Order类实现Cloneable接口重写clone方法在这个方法里面调用supper.clone()方法就好了。 public class Order{//id 主键无实际意义private String id;//订单编号private String orderNo;//产品编码private String productNo;//产品名称private String productName;//产品类型private String productType;//订单购买数量private Integer num;//用户idprivate String userId;//用户名称private String userName;//用户电话号码private String tel;//用户住址private String address;//购买店铺用于识别改订单是在哪一个店铺下的单。private Store store;Overridepublic Order clone(){Order order1 new Order();try {order1 (Order) super.clone();}catch (Exception e){System.out.println(e.getMessage());}return order1;} }有兴趣的未来大佬们可以去看一下clone的源码这里用的super.clone()是Object中的clone方法。这个方法是native的方法本地方法。Java中用native关键字修饰的函数表明该方法的实现并不是在Java中去完成而是由C/C去完成并被编译成了.dll由Java去调用。方法的具体实现体在dll文件中对于不同平台其具体实现应该有所不同。用native修饰即表示操作系统需要提供此方法Java本身需要使用。   clone主要做的就是开创新的空间将原对象的数据复制过去再给返回引用。在Java里面所有的类如果重写clone方法就都是个性化的处理了。但是需要注意的是这个native的clone是浅拷贝。也就是在对象中还有对象的话内部的对象clone之后还是原来的对象。 以咱们的代码举例   在Order类中有一个属性是Store的实例。在上面的clone执行之后如果改变clone之后的实例中的store属性原本的order中的store属性也会改变。 在上面“copyOrder”代码的最后一行增加如下 System.out.println(order2order1);System.out.println(order:order);System.out.println(改变前order1order1.getStore());System.out.println(改变前orderorder.getStore());order1.getStore().setAddress(地球村-鹰酱家门头房);System.out.println(改变后order1order1.getStore());System.out.println(改变前orderorder.getStore());可以看到我们只改变了order1实例中store的address属性但是order的对应属性也跟着一起变了。 如何解决上面的浅拷贝 原型模式定义 原型模式Prototype Pattern用于创建重复的对象同时又能保证性能。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式之一。 这种模式是实现了一个原型接口该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时则采用这种模式。例如一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象在下一个请求时返回它的克隆在需要的时候更新数据库以此来减少数据库调用。 定义是引用自菜鸟教程-原型模式
http://www.pierceye.com/news/94545/

相关文章:

  • 如何查网站外链wordpress火车头采集免费版
  • 四川住房建设和城乡建设厅新网站wordpress 采集 api
  • 企业所得税怎么交南昌seo实用技巧
  • 深圳英文网站开发企业网站和展板建设
  • 国内网站设计制作网页游戏传奇盛世开服表
  • 网站图片放大特效怎么做网站建设的后期服务要包括什么软件
  • 网站降权投诉商标注册证书电子版怎么查询
  • 济南网站制作公司哪家好网站建设搞笑广告词
  • 建设主管部门门户网站摄影网站源码 免费下载
  • js 曲线 网站营销型网站方案书
  • 如何盗取网站软件开发的自学教程
  • 傻瓜建站家庭网络搭建网站
  • 扬中做网站的公司静态网页生成器
  • 襄阳做公司网站的软件公司wordpress网站好做排名吗
  • 电商网站功能介绍太原市做网站公司
  • 网站开发融资计划网站响应式和电脑手机
  • 专做水果的网站天门市规划建设局网站
  • 网站百度地图生成器建设一个网站可以做什么
  • 用阳寿做交易的网站建盏公司简介
  • 机械加工网站哪个好服装设计专业有前途吗
  • 深圳 企业 网站建设哪家好没有域名的网站需要备案吗
  • 深圳返利网站建设扁平化 手机网站首页
  • 郑州核酸点推vip服务网站优化标准
  • 建设银行河南分行网站邢台做网站哪里便宜
  • 网站收录原创文章wordpress新框架vue
  • 中工信融做网站怎么样凡科建站代理平台
  • 网站设计图能用ps做么dedecms 图片网站
  • 自己有服务器怎么做网站wordpress会员卡
  • 网站打不开 ...wordpress 评论表情插件
  • 网站开发框架 Wordpress网站整体设计流程