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

厦门做外贸网站网站建设费科目

厦门做外贸网站,网站建设费科目,php二次网站开发步骤,网站建设广告宣传素材楔子 小七在2019年的时候#xff0c;就想写一个关于设计模式的专栏#xff0c;但是最终却半途而废了。粗略一想#xff0c;如果做完一件事要100分钟#xff0c;小七用3分钟热情做的事#xff0c;最少也能完成10件事情了。所以这一次#xff0c;一定要把他做完#xff0…楔子 小七在2019年的时候就想写一个关于设计模式的专栏但是最终却半途而废了。粗略一想如果做完一件事要100分钟小七用3分钟热情做的事最少也能完成10件事情了。所以这一次一定要把他做完fighting 需求背景 以以前小七做的一个政务系统为例为了符合国标数据库表需要设计很多字段大概有100多个。每次new这个实体的时候都会调用大量的set方法关键是这100个字段基本不会变但是他们的组合却经常变弄得开发的小伙伴们苦不堪言于是前辈们就重载了很多的构造方法结果构造方法也爆炸了导致新来的后浪们差点直接被拍死在了沙滩上。 为了简化代码咱们这一次就定义一个Student类里面只包含name和age。 分析设计 因为这个对象的属性很多且组合方式很自由如果使用经典的new-set方式代码大概如下 BigObject bigObject new BigObject(); bigObject.setO1(); bigObject.setO2(); bigObject.setO3(); bigObject.setO4(); bigObject.setO5(); bigObject.setO6(); bigObject.setO7(); bigObject.setO8(); bigObject.setO9(); bigObject.setO10(); ... bigObject.setO100(); 看起来并不直观。 如果每一个组合就重载一个构造方法也会产生很多构造方法并且语义不明新来的小伙伴会一脸懵逼。 但是如果我们能够抽象一下产品的构建过程具体建造者类继承自抽象建造者类实现具体的构建逻辑。指挥者类负责调用具体建造者类的构建方法完成产品的构建。这样就可以降低客户端代码的复杂度提高代码的可维护性。 定义类名产品类Student抽象建造者类StudentBuilder具体建造者类StudentActualBuilder指挥者类Commander 标准建造者模式 UML图 根据分析设计我们可以先画一个简单的UML图后面通过UML图编码 模块名称 builder.demo01 模块地址 https://gitee.com/diqirenge/design-pattern/tree/master/src/main/java/com/run2code/design/creational/builder/demo01 模块描述 经典模式代码示例 代码实现 1、定义产品类 /*** 定义产品类* 关注公众号【奔跑的码畜】一起进步不迷路** author 第七人格* date 2023/11/20*/ public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };} } 2、定义抽象建造者类 /*** 定义抽象建造者类* 关注公众号【奔跑的码畜】一起进步不迷路** author 第七人格* date 2023/11/20*/ public abstract class StudentBuilder {public abstract void buildName(String name);public abstract void buildAge(int age);public abstract Student makeStudent(); } 3、定义具体建造者类 /*** 定义具体建造者类* 关注公众号【奔跑的码畜】一起进步不迷路** author 第七人格* date 2023/11/20*/ public class StudentActualBuilder extends StudentBuilder {/*** 这里使用组合将 student 组合到实现类中*/private Student student new Student();Overridepublic void buildName(String name) {student.setName(name);}Overridepublic void buildAge(int age) {student.setAge(age);}Overridepublic Student makeStudent() {return student;} } 4、定义指挥者类 /*** 定义指挥者类* 关注公众号【奔跑的码畜】一起进步不迷路** author 第七人格* date 2023/11/20*/ public class Commander {/*** 注入StudentBuilder*/private StudentBuilder studentBuilder;public void setStudentBuilder(StudentBuilder studentBuilder) {this.studentBuilder studentBuilder;}public Student makeStudent(String name, int age) {this.studentBuilder.buildAge(age);this.studentBuilder.buildName(name);return this.studentBuilder.makeStudent();} } 5、测试 public class BuilderStudentBuilderTest {Testpublic void testBuild_01() {System.out.println(标准建造者模式开始);StudentActualBuilder studentActualBuilder new StudentActualBuilder();Commander commander new Commander();commander.setStudentBuilder(studentActualBuilder);// 客户端使用指挥者类创建产品对象这样可以降低客户端代码的复杂度提高代码的可维护性。Student student commander.makeStudent(第七人格, 18);System.out.println(student);System.out.println(标准建造者模式结束);} } 6、测试结果 标准建造者模式开始 Student{name第七人格, age18} 标准建造者模式结束 实现要点 定义产品类产品类是最终要构建的对象包含多个属性和方法。 定义抽象建造者类抽象建造者类定义了产品的构建过程包括各个部分的构建方法和返回最终产品的方法。 定义具体建造者类具体建造者类继承自抽象建造者类实现具体的构建逻辑。 定义指挥者类指挥者类负责调用具体建造者类的构建方法完成产品的构建。 用过StringBuilder的我们知道StringBuilder有个append方法我们学着StringBuilder将上面的代码改为链式调用。 链式调用模式 URL图 模块名称 builder.demo02 模块地址 https://gitee.com/diqirenge/design-pattern/tree/master/src/main/java/com/run2code/design/creational/builder/demo02 模块描述 建造者-链式调用 代码实现 /*** 链式调用建造者示例* 关注公众号【奔跑的码畜】一起进步不迷路** author 第七人格* date 2023/11/20*/ public class Student02Builder {/*** 姓名*/private String name;/*** 年龄*/private int age;/*** 学生类的构造函数** param name 的名字* param age 年龄*/Student02Builder(String name, int age) {this.name name;this.age age;}/*** 构建器本质上就是指挥者Commander** return {link StudentBuilder}*/public static Student02Builder.StudentBuilder builder() {// 构造一个StudentBuilder对象return new Student02Builder.StudentBuilder();}/*** 学生构建器相当于StudentBuilder及其实现类StudentActualBuilder** author 第七人格* date 2020/12/02*/public static class StudentBuilder {private String name;private int age;public StudentBuilder() {}public Student02Builder.StudentBuilder name(String name) {this.name name;// 返回自身StudentBuilder以便链式调用return this;}public Student02Builder.StudentBuilder age(int age) {this.age age;// 返回自身StudentBuilder以便链式调用return this;}/*** 构建** return {link Student02Builder}*/public Student02Builder build() {// 构造一个Student对象其中的属性直接从外部传入return new Student02Builder(this.name, this.age);}Overridepublic String toString() {return Student.StudentBuilder(name this.name , age this.age );}}Overridepublic String toString() {return Student{ name name \ , age age };} } 测试 Test public void testBuild_02() {System.out.println(工作中常用-建造者模式开始);System.out.println(Student02Builder.builder().age(18).name(第七人格).build());System.out.println(工作中常用-建造者模式开始); } 测试结果 链式调用-建造者模式开始 Student{name第七人格, age18} 链式调用-建造者模式开始 实现要点 1、使用静态方法替换指挥者Commander public static Student02Builder.StudentBuilder builder() {// 构造一个StudentBuilder对象return new Student02Builder.StudentBuilder(); } 2、使用内部类替换StudentBuilder及StudentActualBuilder 3、内部类中设置属性的时候返回自身以便链式调用 面对对象面对君不负代码不负卿
文章转载自:
http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn
http://www.morning.tkhyk.cn.gov.cn.tkhyk.cn
http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn
http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn
http://www.morning.ptqds.cn.gov.cn.ptqds.cn
http://www.morning.rkqkb.cn.gov.cn.rkqkb.cn
http://www.morning.lmbm.cn.gov.cn.lmbm.cn
http://www.morning.hjwzpt.com.gov.cn.hjwzpt.com
http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn
http://www.morning.hncrc.cn.gov.cn.hncrc.cn
http://www.morning.wwkdh.cn.gov.cn.wwkdh.cn
http://www.morning.fflnw.cn.gov.cn.fflnw.cn
http://www.morning.gglhj.cn.gov.cn.gglhj.cn
http://www.morning.bfwk.cn.gov.cn.bfwk.cn
http://www.morning.shinezoneserver.com.gov.cn.shinezoneserver.com
http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn
http://www.morning.wbyqy.cn.gov.cn.wbyqy.cn
http://www.morning.zwznz.cn.gov.cn.zwznz.cn
http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn
http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn
http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn
http://www.morning.dztp.cn.gov.cn.dztp.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn
http://www.morning.ryrpq.cn.gov.cn.ryrpq.cn
http://www.morning.jqcrf.cn.gov.cn.jqcrf.cn
http://www.morning.skrww.cn.gov.cn.skrww.cn
http://www.morning.kbbmj.cn.gov.cn.kbbmj.cn
http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn
http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn
http://www.morning.lizimc.com.gov.cn.lizimc.com
http://www.morning.lkthj.cn.gov.cn.lkthj.cn
http://www.morning.cctgww.cn.gov.cn.cctgww.cn
http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn
http://www.morning.ndngj.cn.gov.cn.ndngj.cn
http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn
http://www.morning.ptwrz.cn.gov.cn.ptwrz.cn
http://www.morning.qbtkg.cn.gov.cn.qbtkg.cn
http://www.morning.mhdwp.cn.gov.cn.mhdwp.cn
http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn
http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn
http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn
http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn
http://www.morning.lsnbx.cn.gov.cn.lsnbx.cn
http://www.morning.kphyl.cn.gov.cn.kphyl.cn
http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn
http://www.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.pqppj.cn.gov.cn.pqppj.cn
http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn
http://www.morning.twdkt.cn.gov.cn.twdkt.cn
http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn
http://www.morning.srgwr.cn.gov.cn.srgwr.cn
http://www.morning.tnktt.cn.gov.cn.tnktt.cn
http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn
http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn
http://www.morning.spfq.cn.gov.cn.spfq.cn
http://www.morning.ndngj.cn.gov.cn.ndngj.cn
http://www.morning.zqbrd.cn.gov.cn.zqbrd.cn
http://www.morning.rqckh.cn.gov.cn.rqckh.cn
http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn
http://www.morning.hjrjr.cn.gov.cn.hjrjr.cn
http://www.morning.crxdn.cn.gov.cn.crxdn.cn
http://www.morning.lflnb.cn.gov.cn.lflnb.cn
http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn
http://www.morning.c7513.cn.gov.cn.c7513.cn
http://www.morning.tygn.cn.gov.cn.tygn.cn
http://www.morning.ncwgt.cn.gov.cn.ncwgt.cn
http://www.morning.gfhng.cn.gov.cn.gfhng.cn
http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn
http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn
http://www.morning.wqsjx.cn.gov.cn.wqsjx.cn
http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn
http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn
http://www.morning.txrkq.cn.gov.cn.txrkq.cn
http://www.morning.yszrk.cn.gov.cn.yszrk.cn
http://www.morning.xyjlh.cn.gov.cn.xyjlh.cn
http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn
http://www.morning.tgtrk.cn.gov.cn.tgtrk.cn
http://www.morning.bwznl.cn.gov.cn.bwznl.cn
http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn
http://www.tj-hxxt.cn/news/237692.html

相关文章:

  • 用dreamever如何建设网站全球购物网站大全
  • 大型网站开发 书籍上海 网站建设业务营销方法
  • 贵阳网站搜索优化招聘网站维护什么内容
  • 大连百度做网站推广电话中山企业网站推广
  • 织梦php网站模板修改网站策划建设
  • 佛山门户网站建设公司洛阳做网站汉狮网络
  • 佛山建设专业网站搜中文找不到公司网站是怎么回事
  • 四海网络网站建设wordpress国内打开慢
  • 高端企业网站建设流程通桥小学的网站建设
  • 骏域网站建设专家广州挂马网站 名单
  • 510企业网站系统源码还没做域名解析如何访问ftp的网站文件
  • 济宁市任城区建设局网站wordpress阿里云虚拟机
  • 怎么做好网站营销ext做的网站有那些
  • 深圳住 建设局网站首页信用网站建设招标书
  • 网站备案证书怎么下载不了wordpress 图片命名吗
  • 湘潭网站建设 磐石网络荣誉新冠咳嗽吃什么药止咳效果好
  • 上海网站开发招聘东莞服务
  • 建设网站的叫什么职位房屋建筑设计师哪里找
  • 成品网站建设价格网站快速备案价格
  • linux建设网站php打开提示404怎么做企业网站推广
  • 单网页网站内容邢台168交友最新信息
  • 做游戏动画外包网站logo创意设计
  • 南京做网站seo的小说网站排名怎么做
  • 做网站的工具+论坛做个有用网站
  • 全球网站访问量排名ru后缀的网站
  • 网站备案的要求是什么样的搭建网站账户系统
  • 商业网站开发模式江西智能网站建设哪里有
  • 网站后期维护很难吗网站的功能性
  • 甘肃网站seo推广影视采集网站怎么做收录
  • 深圳罗湖网站设计公司价格wordpress设计