IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

设计模式(三):建造者模式

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

  

建造者模式

UML类图:

68_1.png

说明:

  Director指挥者类可以调用所有建造者抽象类Builder1,Builder2,Builder3 …

  每一个建造者抽象类Builder只生产一类产品,类中分别规定了生产各个构件的方法,及最后创建完整产品的方法。

  每一个建造者抽象类Builder都有对应的实现类ConcreteBuilder,在实现类中,实现Builder中的所有方法。

  Product产品类,主要包含组合产品构件方法、展示完整产品方法,是产品的表示。

优点:

  ①因为将一个复杂产品的创建过程和其表示分离,使得同样的创建过程可以创建不同表示。

   用户不必知道复杂产品的内部构成,直接使用某一创建过程(建造者类)创建,之后,因为创建过程和表示是分离的,所以创建结果可以表示为不同的产品,

  ②每一个建造者类独立,方便调用、替换、增改。

  ③面对非常复杂的产品,可以将其创建步骤分解到不同的建造者中,清晰化创建过程,更加精确地控制复杂产品的创建过程。

缺点:

  ①如果产品内部的变化或构成极其复杂,可能会需要定义很多建造者实现类(ConcreteBuilder)来实现这种变化,

   会导致系统变得很庞大,增加了系统的理解难度和运行成本,也不易维护

  ②只适用于同类产品(内部结构相同)的创建,如果产品内部的构成或变化差异很大,则不适用此模式。

适用范围:创建具有复杂的内部结构,且内部属性本身相互依赖的产品。

客户端:

  Director director = new Director(); //创建指挥者类

  Builder builder1 = new ConcreteBuilder1(); //选中一类具体产品,实例化其建造类ConcreteBuilder1

  director.construct1(builder1); //指挥者调用此建造类

  Product product = builder1.getProduct(); //建造类ConcreteBuilder1来生产完整的此类产品

  product.show(); //产品展示

  // 同一个Builder可以创建不同的具体产品

  Builder builder2 = new ConcreteBuilder2(); //选中另一类具体产品,实例化其建造类ConcreteBuilder2

  director.construct1(builder2);

  Product product2 = builder2.getProduct();

  product2.show();

  一句话概括:将一个复杂对象的构件和它的表示分离,使得同样的构建过程可以创建不同的表示

/**
  * 建造者模式 :将一个复杂对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表示
  * 
  * Builder                                BuilderOther                               (每个Builder只生产一类产品,包含生产各个构件的方法,及获取完整产品的方法)
  * ConcreteBuilder1  ConcreteBuilderImp2  ConcreteBuilderOther1  ConcreteBuilderOther2  (实现Builder的所有方法,会调用Product中的构件组合方法,以便创建产品)
  *
  * Director (选择生产哪种产品,指挥建造过程,即调用Builder中该产品各构件的产生方法)
  *
  * Product  (提供构件组合方法,并负责将实例化的产品展示)
  */

文章永久链接:https://tech.souyunku.com/?p=20317


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(83) 打赏



未经允许不得转载:搜云库技术团队 » 设计模式(三):建造者模式

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367