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

网站设计编辑wordpress 试用

网站设计编辑,wordpress 试用,做旅游网站当地人服务赚钱吗,江阴做网站目录 建造者模式#xff08;Builder Pattern#xff09; 建造者模式的核心角色 优缺点 使用场景 注意事项 代码实现 建造者模式#xff08;Builder Pattern#xff09; 建造者模式#xff08;Builder Pattern#xff09;是将一个复杂对象的构建与它的表示分离Builder Pattern   建造者模式的核心角色 优缺点 使用场景 注意事项 代码实现 建造者模式Builder Pattern   建造者模式Builder Pattern是将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象它允许用户只通过指定复杂对象的类型和内容就可以构建它们用户不需要知道内部的具体构建细节。 建造者模式的核心角色 1、抽象建造者Builder是为创建一个Product对象的各个部件指定的抽象接口。 2、具体建造者ConcreteBuilder实现Builder接口构造和装配各个部件。 3、指挥者Director是构建一个实用Builder接口的对象。一方面它隔离了客户与生产过程另一方面它负责控制产品的生成过程。 4、产品角色Product具体的产品 优缺点 1优点 分离构建过程和表示使得构建过程更加灵活可以构建不同的表示。 可以更好地控制构建过程隐藏具体构建细节。 代码复用性高可以在不同的构建过程中重复使用相同的建造者。 2缺点 如果产品的属性较少建造者模式可能会导致代码冗余。 建造者模式增加了系统的类和对象数量。 使用场景 建造者模式在创建复杂对象时非常有用特别是当对象的构建过程涉及多个步骤或参数时。它可以提供更好的灵活性和可维护性同时使得代码更加清晰可读。 需要生成的对象具有复杂的内部结构。 需要生成的对象内部属性本身相互依赖 注意事项 与工厂模式的区别是建造者模式更加关注与零件装配的顺序。 代码实现 package mainimport (errorsfmt )// Product内的参数 type ResourceParams struct {name stringmaxTotal int64maxIdle int64minIdle int64 }// Product接口 type ResourceProduct interface {show() }// 实际Product有show函数 type RedisResourceProduct struct {resourceParams ResourceParams }// show成员函数用于显示product的参数内容 func (p *RedisResourceProduct) show() {fmt.Printf(Product的数据为 %v , p.resourceParams) }// 资源类创建接口 type ResourceBuilder interface {setName(name string) ResourceBuildersetMaxTotal(maxTotal int64) ResourceBuildersetMaxIdle(maxIdle int64) ResourceBuildersetMinIdle(minIdle int64) ResourceBuildergetError() errorbuild() (p ResourceProduct) }// 实际建造者 type RedisResourceBuilder struct {resourceParams ResourceParamserr error }// 设置名称 func (r *RedisResourceBuilder) setName(name string) ResourceBuilder {if name {r.err errors.New(name为空)return r}r.resourceParams.name namefmt.Println(RedisResourceBuilder setName , name)return r }// 设置maxTotal值值不能小于0 func (r *RedisResourceBuilder) setMaxTotal(maxTotal int64) ResourceBuilder {if maxTotal 0 {r.err errors.New(maxTotal小于0)return r}r.resourceParams.maxTotal maxTotalfmt.Println(RedisResourceBuilder setMaxTotal , maxTotal)return r }// 设置maxIdle值值不能小于0 func (r *RedisResourceBuilder) setMaxIdle(maxIdle int64) ResourceBuilder {if maxIdle 0 {r.err errors.New(maxIdle小于0)return r}r.resourceParams.maxIdle maxIdlefmt.Println(RedisResourceBuilder setMaxIdle , maxIdle)return r }// 设置minIdle值值不能小于0 func (r *RedisResourceBuilder) setMinIdle(minIdle int64) ResourceBuilder {if minIdle 0 {r.err errors.New(minIdle小于0)return r}r.resourceParams.minIdle minIdlefmt.Println(RedisResourceBuilder setMinIdle , minIdle)return r }// 获取错误信息 func (r *RedisResourceBuilder) getError() error {return r.err }// 构建product: 1. 做参数校验 2. 根据参数生成product func (r *RedisResourceBuilder) build() (p ResourceProduct) {// 校验逻辑放到这里来做包括必填项校验、依赖关系校验、约束条件校验等if r.resourceParams.name {r.err errors.New(name为空)return}if !((r.resourceParams.maxIdle 0 r.resourceParams.minIdle 0 r.resourceParams.maxTotal 0) ||(r.resourceParams.maxIdle ! 0 r.resourceParams.minIdle ! 0 r.resourceParams.maxTotal ! 0)) {r.err errors.New(数据需要保持一致)return}if r.resourceParams.maxIdle r.resourceParams.maxTotal {r.err errors.New(maxIdle maxTotal)return}if r.resourceParams.minIdle r.resourceParams.maxTotal || r.resourceParams.minIdle r.resourceParams.maxIdle {r.err errors.New(minIdle maxTotal|maxIdle)return}fmt.Println(RedisResourceBuilder build)product : RedisResourceProduct{resourceParams: r.resourceParams,}return product }// 指挥者 type Director struct { }// 指挥者控制建造过程 func (d *Director) construct(builder ResourceBuilder) ResourceProduct {resourceProduct : builder.setName(redis).setMinIdle(10).setMaxIdle(10).setMaxTotal(20).build()err : builder.getError()if err ! nil {fmt.Println(构建失败原因为 err.Error())return nil}return resourceProduct }func main() {builder : RedisResourceBuilder{}director : Director{}product : director.construct(builder)if product nil {return}product.show() }
http://www.zqtcl.cn/news/453541/

相关文章:

  • 自适应网站建设推荐淘宝详情页设计
  • 手机网站域名设置深圳的网站建设公司怎么样
  • 余姚网站建设设计服务cms网站源码
  • 工作是套模板做网站想做网站制作运营注册什么公司核实
  • 北京网站建设116networdpress导航栏下拉菜单
  • 医院网站建设的目标网络服务许可证
  • 市场部做网站工作职责晋江论坛网
  • 网站怎么吸引人网站优化策略分析
  • 河北建设厅网站衡水网站建设培训学校
  • 新网网站空间到期停了 咋续费网站营销推广应该怎么做
  • 网站建设和编辑实训报告安卓版网页制作软件
  • 网站模板框架站长资讯
  • 上海做网站哪家公司2022年国际国内重大新闻
  • 网站建设如何定位网站建设思路方向
  • 手机网站拦截怎么解除网站生成软件免费制作
  • 中国房地产网站茂名住房和城乡建设厅网站
  • 做网站销售工资怎么样网页设计是哪个专业
  • 吉林省住房城乡建设厅网站首页微商城模板包含哪些
  • 优秀个人网站案例wordpress 文章格式
  • 2019年做网站装修平面设计图的制作
  • 潍坊网站建设top淘宝客网站名
  • 怎么给网站做外链网上接效果图平台
  • 电影网站建设教程下载怎么经营团购网站
  • 做网站卖什么建设银信用卡网站首页
  • 大连市城乡建设档案馆网站网上竞价采购网站建设
  • 国际物流公司网站建设浏览器正能量网站免费图片
  • 河南做外贸网站的公司怎么做家庭网站
  • 知名营销类网站互联网软件开发是什么工作
  • 做网站前新闻录入网站模板
  • 网站域名做跳转要收费吗科技信息期刊