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

官方网站管理办法网站开发毕业设计

官方网站管理办法,网站开发毕业设计,网站建设那个好,网站网页切换怎么做笔者的碎碎念 其实之前有写过建造者模式的文章#xff0c;但是感觉其实写的不怎么样#xff0c;而且自己也理解的一般#xff0c;但是阅读一些框架源码发现#xff0c;这些模式真的蛮重要的#xff0c;很多框架例如OkHttp#xff0c;Retrofit等等都大量使用了建造者模式…笔者的碎碎念 其实之前有写过建造者模式的文章但是感觉其实写的不怎么样而且自己也理解的一般但是阅读一些框架源码发现这些模式真的蛮重要的很多框架例如OkHttpRetrofit等等都大量使用了建造者模式以及一些其他的设计模式于是决定对这些模式进行学习和整理将写一个专栏来记录自己的的学习记录你知道的好记性不如烂笔头加油 建造者模式的由来 因 Java 中没有命名参数的概念当一个类的构造器可选参数太多的时候代码可读性会变得很差。我们通过一个例子来说明假设我们有一个连接池的配置类 ConnectionPoolConfig它包含了多个可选参数比如 maxConnections最大连接数、minConnections最小连接数、timeout超时时间等。为了支持不同的配置选项最初可能会使用伸缩式构造器模式或者JavaBeans构造器模式来创建这个对象。 伸缩式构造器模式 public class ConnectionPoolConfig {private int maxConnections;private int minConnections;private int timeout;public ConnectionPoolConfig(int maxConnections, int minConnections, int timeout) {this.maxConnections maxConnections;this.minConnections minConnections;this.timeout timeout;} ...省略ConnectionPoolConfig中的其他构造方法// Getters and setters }使用伸缩式构造器模式我们可能会遇到以下问题 参数顺序依赖性 如果某些参数是可选的并且它们的顺序与构造函数中的参数顺序不匹配那么我们就不得不在构造对象时填充未使用的默认值比如 ConnectionPoolConfig config new ConnectionPoolConfig(10, 5, 0); // timeout 默认为 0参数类型相似性 如果两个参数类型相似比如都是整数在构造对象时容易搞错参数的顺序这可能会导致严重的错误。 JavaBeans构造器模式 然后我们针对这些进行改进有了后来的JavaBeans构造器模式。 public class ConnectionPoolConfig {private int maxConnections;private int minConnections;private int timeout;public ConnectionPoolConfig() {// Empty constructor}// Setterspublic void setMaxConnections(int maxConnections) {this.maxConnections maxConnections;}public void setMinConnections(int minConnections) {this.minConnections minConnections;}public void setTimeout(int timeout) {this.timeout timeout;} ...省略// Getters }使用JavaBeans构造器模式虽然解决了参数顺序依赖性的问题但引入了新的问题  对象状态不一致性 构建对象需要多次调用不同的 setter 方法这可能会导致对象在构造过程中处于不一致的状态。例如如果某个字段在设置之前被访问可能得到不完整或不正确的对象状态。  建造者模式 于是建造者模式Builder Pattern应运而生。 建造者模式在这些问题的基础上提供了更加灵活和安全的对象构建方式 public class ConnectionPoolConfig {private final int maxConnections;private final int minConnections;private final int timeout;private ConnectionPoolConfig(Builder builder) {this.maxConnections builder.maxConnections;this.minConnections builder.minConnections;this.timeout builder.timeout;}// Getterspublic static class Builder {private int maxConnections;private int minConnections;private int timeout;public Builder() {// 默认值或者空构造器}public Builder maxConnections(int maxConnections) {this.maxConnections maxConnections;return this;}public Builder minConnections(int minConnections) {this.minConnections minConnections;return this;}public Builder timeout(int timeout) {this.timeout timeout;return this;}public ConnectionPoolConfig build() {return new ConnectionPoolConfig(this);}} } 优点  链式调用 使用建造者模式可以使用链式调用来设置对象的各个属性清晰地表达出构建对象的步骤和顺序。 ConnectionPoolConfig config new ConnectionPoolConfig.Builder().maxConnections(10).minConnections(5).timeout(0).build();对象不可变性 在建造者模式中可以将对象设计为不可变的Immutable一旦构建完成后对象的状态不可修改保证了对象的线程安全性和一致性。消除对象状态不一致性问题 建造者模式通过在最终构建之前保持对象状态的一致性避免了JavaBeans模式中可能出现的对象状态不一致性问题。易于解耦将产品本身与产品创建过程进行解耦可以使用相同的创建过程来得到不同的产品。也就说细节依赖抽象。易于精确控制对象的创建将复杂产品的创建步骤分解在不同的方法中使得创建过程更加清晰易于拓展增加新的具体建造者无需修改原有类库的代码易于拓展符合“开闭原则“。 每一个具体建造者都相对独立而与其他的具体建造者无关因此可以很方便地替换具体建造者或增加新的具体建造者用户使用不同的具体建造者即可得到不同的产品对象。  模式原理 使用场景  建造者模式适用于需要创建复杂对象对象有多个部分且构建过程复杂的场景或者需要创建多个相似对象只有部分属性不同的场景。它有效地解决了伸缩式构造器模式和JavaBeans构造器模式存在的问题并提供了一种更加优雅和灵活的解决方案。你经常能在Android看到一些常见的技术框架中都使用了该模式例如OkHttp框架中就有它的大量使用。关于OkHttp我也有文章进行分析如果你感兴趣可以去看看OkHttp中是如何使用建造者模式的-【传送门】。 使用  构造者的创建客户端通过创建一个具体的建造者对象如 Builder并使用链式调用来设置产品的各个属性   ConnectionPoolConfig config new ConnectionPoolConfig.Builder().maxConnections(10).minConnections(5).timeout(30).build();属性设置 每次调用建造者的设置方法如 maxConnections、minConnections、timeout时建造者内部会更新自己的状态以便在构建最终产品时使用。 构建产品 最终调用 build() 方法时建造者将使用其内部状态来实例化并初始化产品对象 ConnectionPoolConfig并返回给客户端。
http://www.pierceye.com/news/190269/

相关文章:

  • 给我做网站的人老是给我留点尾巴太原本地网站搭建公司
  • 静态页面网站站标代码写进到静态页面了 怎么不显示呢?自助建站网
  • 免费在线代理网站微信会员卡管理系统
  • 和动物做的网站吗做网站销售怎么样
  • 宝塔面板做织梦网站深圳龙华大浪做网站公司
  • 阿里云建网站费用上海网站建设觉策动力
  • 电子商务网站的建设与维护方法h5第三方收款平台
  • 网站建设所需人力设计广告网站
  • php网站发送邮件动态倒计时网站模板
  • 温州建设网站制作wordpress调用文章简介
  • 大庆市建设局网站刘东科技公司做网站
  • 山东助企网站建设宁波百度关键词推广
  • 宜昌市夷陵区建设局网站培训推广 seo
  • 怎样做安居客网站用幽默的语言来形容网站开发
  • 宜昌网站建设选择宜昌慧享互动手机怎么防止网站跳转
  • 本地的上海网站建设公司汽车租赁网站设计
  • 在哪下载免费的英文版网站模板建站 网站程序有哪些
  • 网页前端做购物网站的实训报告网络营销推广是做什么的
  • 广东专业网站建设效果wordpress搜索框插件
  • 茂名建站模板搭建岳阳优化营商环境
  • shopify网站建设郑州机械网站制作
  • 郑州正规公司网站建设服务国内专业建站平台
  • 做财经直播网站php网站做安卓客户端
  • 视频直播网站开发运营步骤十大免费erp软件
  • 域名备案和网站备案有什么不同wap 网站
  • 没备案的网站百度收录博客营销
  • 网站开发新技术wordpress 搜索词调用
  • 凡科手机建站教程wordpress 搜索引擎
  • asp企业网站源码下载免费ppt模板公众号
  • 西斗门的网站建设短网址生成器有哪些