<commit_before>---
layout: post
author: mxn
title: android建设者模式分析
category: 技术博文
tag: [android]
---

android建设者模式分析

概述
    将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。建造者模式里，有个指导者，由指导者来管理建造者，用户是与指导者联系的，指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。

　　建造模式是将复杂的内部创建封装在内部，对于外部调用的人来说，只需要传入建造者和建造工具，对于内部是如何建造成成品的，调用者无需关心。
     
 适用性
    1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
 
    2.当构造过程必须允许被构造的对象有不同的表示时。
     
参与者
    1.Builder
      为创建一个Product对象的各个部件指定抽象接口。
 
    2.ConcreteBuilder
      实现Builder的接口以构造和装配该产品的各个部件。
      定义并明确它所创建的表示。
      提供一个检索产品的接口。
 
    3.Director
      构造一个使用Builder接口的对象。
 
    4.Product
      表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
      包含定义组成部件的类，包括将这些部件装配成最终产品的接口。
      
      
      <commit_msg>Update 2015-6-14-android建设者模式分析.md<commit_after>---
layout: post
author: mxn
title: android建设者模式分析
category: 技术博文
tag: [android]
---

android建设者模式分析

概述
    将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。建造者模式里，有个指导者，由指导者来管理建造者，用户是与指导者联系的，指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。

　　建造模式是将复杂的内部创建封装在内部，对于外部调用的人来说，只需要传入建造者和建造工具，对于内部是如何建造成成品的，调用者无需关心。
     
 适用性
    1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
 
    2.当构造过程必须允许被构造的对象有不同的表示时。
     
参与者
    1.Builder
      为创建一个Product对象的各个部件指定抽象接口。
 
    2.ConcreteBuilder
      实现Builder的接口以构造和装配该产品的各个部件。
      定义并明确它所创建的表示。
      提供一个检索产品的接口。
 
    3.Director
      构造一个使用Builder接口的对象。
 
    4.Product
      表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
      包含定义组成部件的类，包括将这些部件装配成最终产品的接口。
      
　建造模式利用一个导演者对象和具体建造者对象一个个地建造出所有的零件，从而建造出完整的产品对象。建造者模式将产品的结构和产品的零件的建造过程对客户端隐藏起来，把对建造过程进行指挥的责任和具体建造者零件的责任分割开来，达到责任划分和封装的目的。　
{'fraction_non_alphanumeric': 0.06400506970849176, 'fraction_numerical': 0.012040557667934094, 'mean_word_length': 4.044728434504792, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5388266', 'n_tokens_mistral': 1163, 'n_tokens_neox': 1348, 'n_words': 62}