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

网站信息化建设建议书搭建电商网站

网站信息化建设建议书,搭建电商网站,湖南软件开发,网站限定域名建造者模式#xff08;Builder Pattern#xff09;是一种创建型设计模式#xff0c;旨在将一个复杂对象的创建过程与其表示分离#xff0c;使得同样的构建过程可以创建不同的表示形式。 主要角色#xff1a; 产品#xff08;Product#xff09;#xff1a;表示正在构建… 建造者模式Builder Pattern是一种创建型设计模式旨在将一个复杂对象的创建过程与其表示分离使得同样的构建过程可以创建不同的表示形式。          主要角色 产品Product表示正在构建的复杂对象。它由多个部分组成这些部分可能具有不同的特性和属性。 抽象建造者Abstract Builder定义了构建产品所需的各个步骤抽象接口。每个步骤都有具体的实现方法用于构建产品的不同部分。通常抽象建造者还提供一个获取最终生成产品的方法。 具体建造者Concrete Builder实现了抽象建造者接口负责实际构建产品的各个部分。具体建造者通常具有一个内部变量来保存当前产品的状态。构建过程中具体建造者负责跟踪和更新产品的状态。 指挥者Director负责按特定顺序调用具体建造者的方法以完成产品的构建过程。指挥者知道构建者应该如何构建产品但不关心具体的构建细节。它通过接收具体建造者对象按照预定的顺序调用构建步骤最终获取完成的产品。 实现步骤 定义产品类Product首先定义一个需要被构建的复杂对象的类这个类通常包含多个属性。 创建抽象建造者接口Builder建造者接口定义了用于构建产品的方法这些方法包括设置产品的属性等。 创建具体建造者类ConcreteBuilder针对产品类实现抽象建造者接口实现产品的各个部件的具体构造过程以及提供获取最终产品的方法。 创建指挥者类Director指挥者类负责使用建造者接口来构建产品。它不直接构建产品而是通过调用建造者接口中的方法来构建产品。 使用建造者模式客户端代码通过指挥者类来构建产品指挥者将构建过程委托给具体的建造者类最终得到构建好的产品。 优点 分离构建过程和最终表示建造者模式可以将产品的构建过程与表示分离使得相同的构建过程可以得到不同的表示。易于扩展通过建造者模式可以很容易地扩展和改变产品的内部表示使得我们可以更灵活地修改构建过程。隐藏细节客户端不需要关心产品的构建细节只需关心最终的产品对象的使用即可。构建复杂对象对于构建具有复杂内部结构的对象来说建造者模式可以使得构建过程更清晰、更易于维护。 缺点 增加代码量引入了建造者模式会增加代码量特别是当产品的属性比较多需要通过建造者类逐一设置时会显得比较繁琐。可能会导致产生多余的建造者对象如果产品的构建过程比较简单引入建造者模式可能会显得有些多余。      客户端Client创建指挥者对象并配置具体建造者然后通过指挥者获取最终构建完成的产品。客户端可以根据需要选择不同的具体建造者或使用自定义的建造者。客户端只需要关心如何使用最终构建完成的产品。      建造者模式允许按照一系列步骤来构建对象而不需要暴露复杂对象的构建过程。这种分步骤的构建方式使得构建过程更加灵活和可扩展并且可以轻松地创建不同组合的对象。此外建造者模式还可以避免创建过多的构造函数或重叠参数的问题。      建造者模式可以有效地解耦复杂对象的构建过程提高灵活性和可维护性同时还可以支持创建不同表示形式的产品。 目录 一、案例 1.1 示例代码 1.2 用建造者模式重写示例 二、模式讲解 2.1 功能 2.2 建造者模式的结构和说明 2.3 建造者模式重写代码的结构图 2.4 建造者模式的调用顺序示意图 3.5 相关模式 3.5.1 建造者模式和组合模式 3.5.2 建造者模式和模板方法模式 3.5.3 建造者模式和工厂方法模式 3.5.4 建造者模式与工厂模式 三、建造者模式结合抽象工厂模式 3.1 结合抽象工厂模式代码实现 3.2 练习 一、案例 在工厂模式中我们抽象了工厂客户端通过创建的工厂来实例化对应的产品。假设产A、产品B和 产品C 是流水线产品流水线步骤一样假设固定组装手机顺序主板 - 电池 - 外壳 - 调试 - 包装这时工厂模式无法满足这种场景。      用建造者模式抽象流水线步骤实现。 1.1 示例代码 产品类 class Product {// 产品的属性// ... } 抽象建造者接口 interface Builder {void buildPart1();void buildPart2();Product getResult(); } 具体建造者类 class ConcreteBuilder implements Builder {private Product product new Product();public void buildPart1() {// 构建产品的第一个部分// ...}public void buildPart2() {// 构建产品的第二个部分// ...}public Product getResult() {return this.product;} } 指挥者 class Director {private Builder builder;public Director(Builder builder) {this.builder builder;}public Product construct() {this.builder.buildPart1();this.builder.buildPart2();return this.builder.getResult();} } 客户端 public class Client {public static void main(String[] args) {Builder builder new ConcreteBuilder();Director director new Director(builder);Product product director.construct();} } 1.2 用建造者模式重写示例 产品类两个产品小米和苹果 Data public class XiaomiPhoneProduct {private String name 小米; } Data public class ApplePhoneProduct {private String name 苹果; } 抽象建造者接口 public interface Builder {/*** 组装主板*/void assembleMainboard();/*** 组装电池*/void assembleBattery();/*** 组装外壳*/void assembleOuter();/*** 调试*/void assembleDebugging();/*** 包装*/void assemblePack();} 小米建造者类 public class XiaoMiBuilder implements Builder {private XiaomiPhoneProduct xm new XiaomiPhoneProduct();Overridepublic void assembleMainboard() {System.out.println(组装 xm.getName() 产品的 主板。);}Overridepublic void assembleBattery() {System.out.println(组装 xm.getName() 产品的 电池。);}Overridepublic void assembleOuter() {System.out.println(组装 xm.getName() 产品的 外壳。);}Overridepublic void assembleDebugging() {System.out.println(调试 xm.getName() 产品。);}Overridepublic void assemblePack() {System.out.println(包装 xm.getName() 产品。);}public XiaomiPhoneProduct getResult() {System.out.println(获取 xm.getName() 产品);return xm;} } 苹果建造者类 public class AppleBuilder implements Builder {private ApplePhoneProduct apple new ApplePhoneProduct();Overridepublic void assembleMainboard() {System.out.println(组装 apple.getName() 产品的 主板。);}Overridepublic void assembleBattery() {System.out.println(组装 apple.getName() 产品的 电池。);}Overridepublic void assembleOuter() {System.out.println(组装 apple.getName() 产品的 外壳。);}Overridepublic void assembleDebugging() {System.out.println(调试 apple.getName() 产品。);}Overridepublic void assemblePack() {System.out.println(包装 apple.getName() 产品。);}public ApplePhoneProduct getResult() {System.out.println(获取 apple.getName() 产品);return apple;} } 指挥者 public class Director {private Builder builder;public Director(Builder builder) {this.builder builder;}public void construct() {// 组装主板this.builder.assembleMainboard();// 组装电池this.builder.assembleBattery();// 组装电池this.builder.assembleOuter();// 调试this.builder.assembleDebugging();// 包装this.builder.assemblePack();} } 客户端 public class Client {public static void main(String[] args) {XiaoMiBuilder xiaoMiBuilder new XiaoMiBuilder();Director director1 new Director(xiaoMiBuilder);// 组装小米手机产品director1.construct();// 获取小米手机XiaomiPhoneProduct result1 xiaoMiBuilder.getResult();AppleBuilder appleBuilder new AppleBuilder();Director director2 new Director(appleBuilder);// 组装苹果手机产品director2.construct();// 获取苹果手机ApplePhoneProduct result2 appleBuilder.getResult();} } 测试支行 组装小米产品的 主板。 组装小米产品的 电池。 组装小米产品的 外壳。 调试小米 产品。 包装小米 产品。 获取小米产品 组装苹果产品的 主板。 组装苹果产品的 电池。 组装苹果产品的 外壳。 调试苹果 产品。 包装苹果 产品。 获取苹果产品 通过上面的 讲述应该能很清晰地看出建造者模式的实现方式和它的优势所在了那就是对同 一个 构建过程只要配置不同的建造者实现就会生成不同表现的对象。 二、模式讲解 建造者模式将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的 表示。 建造者模式的本质分离整体构建算法和部件构造。 2.1 功能 功能构建复杂的产品而且是细化的、分步骤的构建产品也就是建造者模式重在 一步 一步解决构造复杂对象的问题。不只为此更为重要的是这个构建的过程是统一的、固定不变的变化的部分放到建造者部分了只要配置不同的建造者那么同样的构建过程就能构建出不同的产品来。 2.2 建造者模式的结构和说明 Builder建造者接口定义创建 一个Product 对象所需的各个部件的操作。ConcreteBuilder具体的建造者实现实现各个部件的创建并负责组装Product对象的各个部件同时还提供一个让用户获取组装完成后的产品对象的方法。Director指导者也被称为导向者主要用来使用Builder 接口以一个统一的过程来构建所需要的Product 对象。Product产品表示被建造者构建的复杂对象包含多个部件。 2.3 建造者模式重写代码的结构图 建造者模式主要用于以下几个方面的应用场景中 构建复杂对象当需要构建的对象具有复杂的内部结构并且需要通过多个步骤逐步构建时可以使用建造者模式。它可以将构建过程划分为多个步骤每个步骤由具体的建造者来实现从而更加灵活地构建复杂对象。 需要隐藏对象构建过程的细节使用建造者模式可以将对象的构建细节隐藏起来只向客户端暴露一个简单的构建接口。客户端不需要关心对象的具体构建过程只需通过指挥者类来构建对象。 构建对象的部分属性可变如果需要构建的对象具有一些可变的属性而且构建过程中需要根据特定的需求来设置这些属性可以使用建造者模式。建造者模式可以通过具体的建造者类根据不同的需求来设置不同的属性值。 构建多个相似对象如果有多个类似的对象需要构建但是它们的构建过程略有不同可以使用建造者模式。可以提供多个具体的建造者类来分别构建不同的对象从而更好地组织和管理对象的构建过程。 优势 简化对象的创建过程通过建造者模式可以将复杂对象的创建逻辑分解为多个步骤使得构建过程更加清晰和可控。每个步骤都有对应的方法在客户端代码中可以按需调用不必关心具体的创建细节。 可以更灵活地构建对象通过建造者模式可以使用相同的构建过程来构建不同的产品。通过定义不同的具体建造者可以创建具有不同属性配置的对象而不会混淆或混合构建逻辑。 隐藏产品构建细节客户端不需要了解产品的具体构建过程可以直接通过指定建造者的方法来创建产品。这样可以减少客户端对产品内部细节的依赖同时也可以隐藏产品内部的实现细节。 提供了更好的封装性建造者模式将产品的创建过程封装在具体建造者中客户端只需要调用指定的方法获取产品而无需了解建造的细节。这种封装性可以减少对产品内部实现的直接访问提高了代码的封装性和安全性。 支持逐步构建复杂对象通过建造者模式可以分步骤构建复杂对象。在每个步骤中可以对对象进行逐渐完善和扩展从而满足不同的需求和变化。 松散耦合建造者模式可以用同一个构建算法构建出表现 上完全不同的产品实现产品构建和产品表现 上的分离。建造者模式正是把产品构建的过程独立出来使它和具体产品的表现松散耦合从而使得构建算法可以复用而具体产品表现也可以灵活地、方便地扩展和切换。 可以很容 易地改变产 品的内部表示在建造者模式中由 于Builder 对象只是提供接口给Director 使用那么具体的部件创建和装配方式是被Builder 接口隐藏了的Director 并不知道这些具体的实现细节。这样一来要想改变产品的内部表示只需要切换Builder 的具体实现即可不用管Director因此变得很容易。 更好的复用性建造者模式很好地实现了构建算法和具体产品实现的分离。这样一来使得构建产品的算法可以复用。同样的道理具体产品的实现也可以复用同一个产品的实现可以配合不同的构建算法使用。 不足 类的膨胀使用建造者模式会引入额外的建造者类导致类的数量增加。对于简单的对象引入建造者模式可能会显得过度复杂。 对象内部结构的暴露在一些情况下建造者模式会要求产品对象暴露其内部结构以便建造者能够逐步构建对象。这可能违反封装原则并使得产品对象的内部结构对外暴露降低了对象的安全性。 对象构建流程的不可逆转一旦对象的构建过程开始建造者模式往往不支持将构建过程逆转。一旦开始构建很难回到前一个步骤进行修改。 不适合每个场景建造者模式在对象的属性较多、复杂度较高且对象的创建过程中涉及较多的选项和步骤时非常有用。但对于简单的对象使用建造者模式可能会带来过多的额外复杂性。 学习和实现成本建造者模式的实现需要定义产品类、抽象建造者、具体建造者等多个类这可能带来额外的学习和实现成本特别是对于初学者而言。 2.4 建造者模式的调用顺序示意图 3.5 相关模式 3.5.1 建造者模式和组合模式 这两个模式可以组合使用。      对于复杂的组合结构可以使用建造者模式来一步一步构建。 3.5.2 建造者模式和模板方法模式 模板方法模式主要是用来定义算法的骨架把算法中某些步骤延迟到子类中实现。再想起建造者模式 Director 用来定义整体的构建算法把算法中某些涉及到具体部件对象的创建和装配的功能委托给具体的Builder 来实现。      类似 都是定义一个固定的算法骨架然后把算法中的某些具体步骤 交给其他类来完成都能 实现整体算法步骤和某些具体 步骤实现的分离。      区别 模式的目的建造者模式是用来构建复杂对象的而模板方法是用来定义算法骨架尤其是一些复杂的业务功能的处理算法的骨架;模式的实现建造者模式是采用委托的方法而模板方法采用的是继承的方式; 使用的复杂度建造者模式需要组合 Director 和Builder 对象然后才能开始构建要等构建完后才能得最终的对象而模板方法就没有这么麻烦直接使用子类对象即可。 3.5.3 建造者模式和工厂方法模式 这两个模式可以组合使用。      建造者模式的Builder 实现中通常需要选择具体的部件实现。一个可行的方案就是实现成为工厂方法通过工厂方法来获取具体的部件对象然后再进行部件的装配。 3.5.4 建造者模式与工厂模式 1. 关注点不同 工厂模式关注于创建对象的过程即根据客户端请求创建相应的对象实例建造者模式关注于构建复杂对象的过程即通过一步步构建的方式创建对象。   2. 设计目的不同: 工厂模式旨在解耦对象的创建和使用在客户端和具体实现之间建立一个工厂类通过工厂方法创建所需的对象实例建造者模式旨在通过一步步构建来创建一个复杂对象也可以通过一系列构建步骤来定义不同的表示。   3. 灵活性不同: 工厂模式具有较高的灵活性可以根据不同的需求创建不同类型的对象且可以动态切换具体实现建造者模式相对固定通常使用一个具体的构造类按照固定步骤构建对象不太容易切换。   4. 构建过程不同: 工厂模式的创建过程相对简单仅涉及对象的实例化没有复杂的构建过程建造者模式涉及多个步骤每个步骤可以定制和配置可以支持不同对象的创建。 三、建造者模式结合抽象工厂模式 回顾抽象工厂模式 探索设计模式的魅力抽象工厂模式的艺术-CSDN博客文章浏览阅读3.1k次点赞67次收藏68次。抽象工厂模式Abstract Factory Pattern是一种创建型设计模式用于在不指定具体类的情况下创建一系列相关或相互依赖的对象。它提供了一个接口用于创建一系列“家族”或相关依赖对象而无需指定它们的具体类。探索设计模式的魅力简单工厂模式-CSDN博客实现简单工厂的难点就在于 “如何选择” 实现前面便子中传递参数的方法 那都是静态的参数还可以实现成为动态的参数。https://blog.csdn.net/danci_/article/details/135638488 抽象工厂模式和建造者模式可以结合使用以实现更复杂的对象创建过程。  3.1 结合抽象工厂模式代码实现 抽象工厂模式用于创建相关或依赖的对象族而建造者模式用于创建复杂对象的构建过程。下面是一个示例演示如何结合抽象工厂模式和建造者模式 首先定义产品族的抽象工厂接口用于创建产品族中的不同类型产品。例如我们可以创建一个汽车工厂接口来生产不同类型的汽车及其相关零部件。 public interface CarFactory {Engine createEngine();Wheel createWheel();// 其他相关方法 } 然后定义具体的产品族工厂类实现抽象工厂接口并负责创建特定类型的产品。例如我们可以创建一个奔驰汽车工厂类和一个宝马汽车工厂类。 public class BenzFactory implements CarFactory {Overridepublic Engine createEngine() {return new BenzEngine();}Overridepublic Wheel createWheel() {return new BenzWheel();}// 其他相关方法实现 }public class BMWFactory implements CarFactory {Overridepublic Engine createEngine() {return new BMWEngine();}Overridepublic Wheel createWheel() {return new BMWWheel();}// 其他相关方法实现 } 接下来定义产品的抽象建造者接口用于创建复杂对象。例如我们可以创建一个汽车建造者接口来构建汽车对象。 public interface CarBuilder {void buildEngine();void buildWheel();// 其他构建方法Car getCar(); } 然后定义具体的产品建造者类实现抽象建造者接口并负责实际构建复杂对象的各个部分。例如我们可以创建一个汽车建造者类来构建汽车对象。 public class CarBuilderImpl implements CarBuilder {private Car car;public CarBuilderImpl() {this.car new Car();}Overridepublic void buildEngine() {// 构建引擎部分的具体逻辑// car.setEngine(...);}Overridepublic void buildWheel() {// 构建轮子部分的具体逻辑// car.setWheel(...);}// 其他构建方法的具体实现Overridepublic Car getCar() {return car;} } 最后在客户端中使用抽象工厂模式和建造者模式来创建复杂对象。 public class Client {public static void main(String[] args) {// 创建奔驰汽车工厂CarFactory benzFactory new BenzFactory();// 创建汽车建造者CarBuilder builder new CarBuilderImpl();// 设置建造者为奔驰工厂builder.setCarFactory(benzFactory);// 建造汽车并获取Car car builder.buildCar();// 使用创建好的汽车car.drive();} } 在这个例子中我们通过抽象工厂模式创建了一个奔驰汽车工厂和一个宝马汽车工厂并通过建造者模式创建了一个汽车对象。通过结合抽象工厂模式和建造者模式我们可以实现更复杂的对象构建过程并根据具体情况创建不同类型的对象。 3.2 练习 回顾工厂方法模式 探索设计模式的魅力工厂方法模式-CSDN博客文章浏览阅读6.3k次点赞104次收藏71次。工厂方法模式是一种创建型设计模式它提供了一种创建对象的接口但将具体实例化对象的工作推迟到子类中完成。这样做的目的是创建对象时不用依赖于具体的类而是依赖于抽象这提高了系统的灵活性和可扩展性。优点降低耦合度、增加了系统的可扩展性 和 提高代码的可维护性缺点增加了代码的复杂性 和 需要更多的设计考虑。https://blog.csdn.net/danci_/article/details/135611783     请编程实现建造者模式结合工厂方法模式。 PS感谢您耐心看到了这里再麻烦动动发财的手点个赞点个赞点个赞吧关注收藏也是免费的哦
http://www.dnsts.com.cn/news/12145.html

相关文章:

  • 马鞍山建设局网站好的seo公司营销网
  • 什么是建设网站自己做有趣的网站
  • 建设工程交流网站网络seo是什么意思
  • 做ppt必备网站咸阳网站建设公司
  • 电子商城网站建站客网站推广公司官网
  • 如何在网站标题加logo外包是什么意思
  • 西安外贸网站建设智能展厅
  • 深圳网站制作网站建设文案策划网站
  • ps做兼职在什么网站可以找到电视剧下载网站 免费糖醋蒜怎样做
  • 巩义网站网站建设html网站自带字体怎么做
  • 漂亮企业网站企业课程培训
  • 网站建设前的分析公司概况了解注册公司网站流程
  • iis 做网站短视频万能素材库
  • 官方网站制作哪家专业wordpress2018
  • 极客网站建设网站怎么做png阴影
  • 最近几天的新闻大事在线seo短视频
  • 网站百度云链接揭阳市榕城区建设局网站
  • 校园网站建设的要素内蒙古建设协会网站
  • 销售网站内容设计wordpress_主题
  • 做网站毕业设计存在的问题wordpress自带功能
  • 长春seo公司长春网站设计吉安网站公司
  • 深圳网站建设李天亮桂林做网站的公司哪家最好
  • 云南省建设系统网站自己做发卡网站支付接口
  • 免费做网站推广快速搭建企业网站
  • 上海高端网站建设服承德网站建设制作
  • 网站定制联通卡如何提升顾客的体验和服务
  • 免费游戏链接入口九江网站建设优化公司
  • wordpress自动生成缩略图seo优化工程师
  • 咸宁有做网站的吗湘潭网站开发
  • 青岛高端网站建设网站的内容包括什么