展开

关键词

Android -

今天我们来聊一聊我们经常用到的-(Builder Pattern).一:1.什么是 的定义是:将一个复杂的构与其表示相分离,使得同样的构过程可以创不同的表示。 。 是将复杂创过程封装在内部,对于外部调用的人来说,只需要传入工具,对于内部是如何成成品的,调用无需关心,也不知道,具有良好的封装性,可以使客户端不用知道产品内部组成的细节。. 独立,容易扩展。就是解耦。3.的构成,一般的由四部分构成。 对象,然后一个一个set(),get()啦,我们来看一看如何用实现。

35030

Android设计builder

https:blog.csdn.netlyhhjarticledetails49300237 今天小编来说一下Android中的一种设计--Builder绪论:      那么对于Android 初级来说,Builder设计可能在我们开发中用过的很少,但是我们可能见过,我们经常用的AlterDialog.Builder就是一种。 那么到底什么是呢?下面我们来看看它的标准定义:定义:将一个复杂对象的构与它的表示分离,使得同样的构过程可以创不同的表示,同时可以分步的构每一部分。 下面我举一个例子,通过代码来看看什么是举例:package com; ** * Created by Hankkin on 151021. 以上只是builder设计的一种用法总结: 在以下情况使用Build: 1 当创复杂对象的算法应该独立于该对象的组成部分以及它们的装配方时。

18930
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android设计应用---

    Build类在java中的理解:和工厂方法   不同点就是:1.是批量创,可以只创一个;工厂方法,只负责单个创,2.构参数:参数很多,是可以选择输入  也是最突出的特点android中的应用有:Dialog的构,Notitication的构举个例子:AlterDialog.Builder builder = new Builder(context);然后是各种设置 ,其实就是选择性设置参数、最后调用:builder.create().show();如果一个类的构需要很多参数,而且这些参数都不是必须的,这种情况下就比较适合用builder在java中的http连接创 ,也是,一般来说,创一个http连接,你需要设置请求方法,请求url,超时,头部信息,等等,可以选择性的决定需要哪些参数,拥有这种性质的创基本都是属于  

    30350

    定义将一个复杂对象的构与它的表示分离,使同样的构过程可以创不同的表示,这样的设计被称为。 实用范围1.当创复杂对象的算法应该独立于该对象的组成部分以及它们的装配方时。 1332654150_2478.jpg与工厂的区别 我们可以看到,与工厂是极为相似的,总体上,仅仅只比工厂多了一个“导演类”的角色。 在的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂了。 与工厂相比,一般用来创更为复杂的对象,因为对象的创过程更为复杂,因此将对象的创过程独立出来组成一个新的类——导演类。 也就是说,工厂是将对象的全部创过程封装在工厂类中,由工厂类向客户端提供最终的产品;而中,类一般只提供产品类中各个组件的,而将具体过程交付给导演类。

    34460

    概念: 将一个复杂的构与其表示相分离,使得同样的构过程可以创不同的表示。 与工厂的区别:在里,有个指导,由指导来管理,用户是与指导联系的,指导联系最后得到产品。 即可以强制实行一种分步骤进行的过程。是将复杂的内部创封装在内部,对于外部调用的人来说,只需要传入工具,对于内部是如何成成品的,调用无需关心。 举个形象的例子:如汽车,有很多部件,车轮,方向盘,发动机等等,build就是将各种部件分离开来组成对象主要有以下几个方面组成:1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的 :1.使用可以使客户端不必知道产品内部组成的细节。 2.具体的类之间是相互独立的,对系统的扩展非常有利。3.由于具体的是独立的,因此可以对过程逐步细化,而不对其他的块产生任何影响。

    28050

    一、简介:1、:是将一个复杂的对象的构与它的表示分离,使得同样的构过程可以创不同的表示。 2、通常包括下面几个角色:(1)builder:给出一个抽象接口,以规范产品对象的各个组成成分的。 (3)Director:控制过程,用来隔离用户与过程的关联。(4)Product:要创的复杂对象。 个人感觉有点像是像是工厂和策略的一个综合,先用builder生产product,然后用Director来指挥隔离与用户的耦合程度。 5、所属类别:创型二、C++程序 1 设计.cpp : 定义控制台应用程序的入口点。

    26670

    简介 (Builder)将一个复杂对象的构与它的表示分离,使得同样的构过程可以创不同的表示。 是一种对象创 (可参考 设计)。  使用,用户就只需要指定需要的类型,具体的过程和细节并不需要知道。结构?图-结构图Product : 产品类,由多个部件构成。 ==); for (String part : parts) {             System.out.println(part);         }     } }Builder : 抽象 ,指挥Product的过程(控制构各部分组件的顺序)。 参考资料《大话设计》 《HeadFirst设计

    31170

    对于,我们首先来说明是用来干嘛的。一般用于创复杂对象,这些复杂对象的构过程是稳定的,但是内部的构件通常要面临比较复杂的变化。怎么来解释呢? 通常我们可能会抽象出一个创人的接口,并有画出头、手、脚、身体这几个抽象方法,胖子、瘦子分别来实现这几个方法,但是我们还需要将这几个方法组装起来,利用一个指挥类来控制过程,但是集绕我们的过程是稳定的 咦,写到这个地方,我发现好像是不是把问题复杂化了?我们来通过这两周方法来对比看看。 ;18 19 director.construct(b2);20 Product product2 = b2.getResult();21 product2.show();22 }23 }这样我们就用实现了上面创一个胖子和瘦子的需求 第二种方法将小人各个部分即Builder、具体小人Product、构过程Director相互分离。到底是第一种方法简单易读好?还是第二种利用好呢?

    24660

    将复杂的对象的实现过程与表现形进行分离。此用于创一些复杂的对象,内部顺序稳定,但是的内容有复杂的变化。 此代码与表示代码分离,隐藏了产品的组装过程,通过不同的定义不同的产品内部表示。?

    18020

    定义:将一个复杂对象的构与它的表示分离,使同样的构过程可以创不同的表示,这样的设计被称为。 直白点说,(Builder Pattern)使用多个简单的对象一步一步构成一个复杂的对象。 这样的情况下,我们就可以使用UML类图(来自百度图片): image.png 在中,有以下几个角色: 1. Builder:为创一个产品对象的各个部件指定抽象接口。 创一些复杂的对象时,这些对象内部组成构件见中的顺序不同产生了不同的效能,这个时候使用是非常合适。 最后,Java中的StringBuilder也是的使用,但是只能相当于一个ConcreteBuilder没有Director。

    18620

    (Builder Pattern)使用多个简单的对象一步一步构成一个复杂的对象。这种类型的设计属于创,它提供了一种创对象的最佳方。首先来看的UML图:? Director:调用具体来创复杂对象的各个部分,在指导中不涉及具体产品的信息,只负责保证对象各部分完整创或按某种顺序创。Product: 要创的复杂对象。 使用的好处:1.使用可以使客户端不必知道产品内部组成的细节。2.具体的类之间是相互独立的,对系统的扩展非常有利。 3.由于具体的是独立的,因此可以对过程逐步细化,而不对其他的块产生任何影响。 使用的场合:1.创一些复杂的对象时,这些对象的内部组成构件间的顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。

    23810

    使用多个简单的对象一步一步构成一个复杂对象。这种类型的设计属于创。提供了一种创对象的最佳方。将复杂的构与其表示分离,是的同样的构过程可以创不同的表示。 主要解决:在系统中复杂对象的创工作。通常由各个部分的子对象用一定的算法构成。由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化。但是将它们组合在一起的算法和对象相对稳定。 优点:独立,易于扩展,便于控制细节风险。缺点:产品必需有共同点,范围有限制。 如果内部变化复杂,会有很多的类使用场景:需要生成的对象有复杂的内部结构,需要生成的对象内部属性相互依赖与工厂的区别:更加关注与零件装配的顺序。参考:菜鸟教程

    17000

    Builder Pattern又可以称为生成器,是将一个复杂对象的构与它的表示分离,使得同样的构过程可以创不同的表示,属于对象创结构 Builder: 抽象,引入抽象的目的,是将的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来产品,一个是用来返回产品。 比较 与抽象工厂相比,返回一个组装好的完整产品,而抽象工厂返回一系列相关的产品,这些产品位于不同的产品等级结构,构成了一个产品族。 在抽象工厂中,客户端实例化工厂类,然后调用工厂方法获取所需产品对象,而在中,客户端可以不直接调用的相关方法,而是通过指挥类来指导如何生成对象,包括对象的组装过程和步骤,它侧重于一步步构一个复杂对象 缺点 所创的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用,因此其使用范围受到一定的限制。

    12040

    介绍  将多个简单对象一个个的构成复杂对象的过程,提供了一种对象创说是组合的最佳方。    主要解决的问题,有时候一个“复杂对象”的构,可能由于需求不同,需要各部分子对象不同组合,但是不同的组合算法是稳定的。 简单的例子,饭店有多种不一样的菜,荤素热凉,但是不一样的菜品组合在一起就是不一样的套餐。   应用实例:StringBuilder、Function的compose。 System.out.println(prepareNoodles.name()+:+prepareNoodles.price()); prepareNoodles.element(); }}image.png最后的优点在于 缺点是,产品的类型固定,比如食材不能是石头,木头;如果变化复杂需要多个,比如100个不同套餐,需要有100种不一样的组合。

    8510

    介绍该子标题中内容,来源菜鸟教程意图将一个复杂的构与其表示相分离,使得同样的构过程可以创不同的表示。 优点独立,易扩展。便于控制细节风险。缺点:产品必须有共同点,范围有限制。如内部变化复杂,会有很多的类。使用场景需要生成的对象具有复杂的内部结构。需要生成的对象内部属性本身相互依赖。 注意事项与工厂的区别是:更加关注与零件装配的顺序。代码角色和职责产品对象复杂的内部属性集合的bean。 buildSocialId(); ** * 产品属性 公司员工集合 * @return * public abstract CompanyBuilder buildPersonnelList(); 使用 set 多了,也会乱),难以维护,就可以使用该附:目录结构 ?有需要源码的,也可以扫描下方二维码,加我好友,私聊我 - END -

    16330

    今天我们要讲的是设计中三种(创、行为型、结构型)中的创中的,也可以叫 Builder什么叫?他的应用场景又是什么呢? 当我们需要来之同一个类,但是要就有不同结构对象时,就可以通过构另一个来进行实列化。----------以上定义来自《设计之美》。为了加深理解我们再来一个流程图? 接下来我们就看下怎么去实现:?第一步:创我们的抽象类。这里面我们看下有三个抽象方法,来确定不同的商品类型,我们调用不同的方法,达到解偶的思想?第二步:创具体类。 与普通的写法相比的写法使的这个代码可读性高,而且易扩展,不同类型的商品达到了解耦合的效果。

    19340

    概述2. 的结构与实现3. 的应用实例4. 指挥类的深入讨论“代码:https:github.comnateshaodesign-demo1. 概述复杂分析:如何将这些部件组装成一辆完整的汽车并返回给用户? 可以将部件本身和它们的组装过程分开,关注如何一步步创一个包含多个组成部分的复杂对象,用户只需要指定复杂对象的类型即可得到该对象,而无须知道其内部的具体构细节。 的结构包含以下4个角色:Builder(抽象)ConcreteBuilder(具体)Product(产品)Director(指挥)2. ,将产品本身与产品的创过程解耦,使得相同的创过程可以创不同的产品对每一个具体都相对独立,与其他的具体无关,因此可以很方便地替换具体或增加新的具体,扩展方便,符合开闭原则可以更加精细地控制产品的创过程缺点所创的产品一般具有较多的共同点

    4020

    begin 2018年9月12日08:08:17定义将一个复杂的对象的构和它的表示分离,使得同样的构过程可以创不同的表示。 ——《设计:可复用面向对象软件的基础》是一种对象创。使用场景从定义中的关键词“复杂的对象”就可以看出来,适用于当我们在创复杂的对象的时候。 本来是客户端直接创复杂对象,现在是应用,通过指挥指挥具体生成复杂对象的组成部分,然后组装起一个完整的复杂对象。客户端不需要知道复杂对象的构过程,只需要给指挥指定具体即可。 我们可以用车。 遇到多个构器参数时考虑一个类表示包装食品外面的显示的营养成分标签。

    5310

    五大创之四:。 简介姓名:英文名:Builder Pattern价值观:专治丢三落四个人介绍:Separate the construction of a complex object from its representation (来自《设计之禅》)今天给大家介绍的是的使用场景是:创复杂的对象。什么才能算复杂对象? 采用,可以把这个复杂的构过程抽离开,使它不依赖创。下面我们通过故事来讲解。 代码:https:github.com1CSH1DesignPatternsblobmastersrccomliebrotherdesignpatternsbuilder总结通过,可以把本来强依赖的东西解绑

    20940

    (Builder)

    (Builder)将一个复杂的构与其表示相分离,使得同样的构过程可以创不同的表示。 与抽象工厂的区别:在里,有个指导(Director),由指导来管理,用户是与指导联系的,指导联系最后得到产品。即可以强制实行一种分步骤进行的过程。 类图:?四要素:1.产品类Product:一般是一个较为复杂的对象,也就是说创对象的过程比较复杂,一般会有比较多的代码量。 2.抽象类Builder: 将的具体过程交与它的子类来实现,这样更容易扩展。3.类ConcreteBuilder: 组产品;返回组好的产品。 4.指导类Director: 负责调用适当的来组产品,指导类一般不与产品类发生依赖关系,与指导类直接交互的是类。似乎很抽象。

    21910

    相关产品

    • 消息队列 CKafka

      消息队列 CKafka

      CKafka(Cloud Kafka)是一个分布式的、高吞吐量、高可扩展性的消息系统,100%兼容开源 Kafka API(0.9版本)。Ckafka 基于发布/订阅模式,通过消息解耦,使生产者和消费者异步交互,无需彼此等待。Ckafka 具有数据压缩、同时支持离线和实时数据处理等优点,适用于日志压缩收集、监控数据聚合等场景。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券