当前位置: 首页 > 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.zqtcl.cn/news/94545/

相关文章:

  • 河东天津网站建设永州做网站的公司
  • 网页制作与网站建设填空题免费的企业邮箱怎么申请
  • 智慧农业网站建设沈阳建设信息网
  • 永久免费素材网站个人网站域名所有权
  • 做网站都需要什么工具网站开发培训哪里好
  • 做网站里面的图片像素要求安徽 网站建设
  • 电子商务推广网站wordpress小程序搭建
  • 张家港网站开发培训广告代理那些平台可以给网站做外链
  • 搞一个公司网站得多少钱中国航天空间站最新消息
  • php移动网站开发微商做图王官方网站
  • 制作网站中英文字体不能为网页设计与制作教程试题
  • 网站建设与管理案例柳洪轶wordpress学校站模板
  • 湖北省和住房建设厅官方网站自媒体专业
  • 榆林网站开发自己建设购物网站
  • 新材建设局网站百度提问首页
  • 网站优化网站建设栅格布局 网站设计
  • 网站建设销售前景网站手机开
  • 网站建站 用户注册北京网站建设方案报价
  • jsp做网站 案例网站模板 招聘
  • 德州建设银行兑换网站服务器网站跳转怎么做的
  • 金华专业做网站公司湖南网站建设服务
  • 企业网站设计沈阳苏宁电器网站建设特点分析
  • 建设工程类公司网站易语言可以做api网站对接吗
  • 青岛做网站皆赴青岛博wordpress 数据库 备份
  • 外贸公司网站空间哈尔滨seo优化专注
  • 建筑行业综合查询平台优化推广联盟
  • 北京管庄网站建设公司开平网站制作
  • 如何做销售直播网站最专业网站建设
  • 太原市住房和城乡建设局的网站首页网络推广服务外包公司
  • 湘icp备 网站建设 农业 湖南稿定设计免费版