具有静态内部类的构建器模式与具有一个抽象和一个+具体实现的构建器设计模式有啥区别

     2023-02-19     297

关键词:

【中文标题】具有静态内部类的构建器模式与具有一个抽象和一个+具体实现的构建器设计模式有啥区别【英文标题】:What is the difference between Builder Pattern with static inner class and Builder design patterns with One Abstract and one+ concrete implimentations具有静态内部类的构建器模式与具有一个抽象和一个+具体实现的构建器设计模式有什么区别 【发布时间】:2021-12-29 10:15:51 【问题描述】:

我正在学习构建器设计模式,我发现了两个相同的解释。

    带有一个静态的内部构建器类,可以适当地返回外部类的对象。 使用一个 Builder 抽象类,然后有多个相同的实现和一个导向器类。

我完全不知道它是哪一个?还是两者兼有?

【问题讨论】:

两者都合适。区别在于1,其他类将无法访问此concreateBuilder类,而2其他类仍然可以访问它。如果您只有一个类从 Builder 扩展,则 1 是一个不错的选择。但是当您有几个类扩展它时,您将 concreateBuilder 视为静态内部构建器类会令人困惑。 @user9594794 公平点!但是我们也可以在 Builder 模式的案例 1 中同时使用两种类型的构建器(案例 2),使用设置器/方法(并且可以选择不设置某些属性),不是吗?这样做有什么缺点? 看看wiki。 【参考方案1】:

它既是……又是更多。有许多源自不同来源的模式,它们都被称为“构建器”。这并不像您想象的那么不寻常。例如,有许多不同的模式都被称为“工厂”。

关于你提到的两个。

    Josh Bloch 在他的书Effective Java中推广了静态内部构建器。 GoF 在其开创性的设计模式一书中推广了抽象多态构建器。

还有来自其他来源的更有用的构建器模式。请参阅:Builder isomorphisms。

【讨论】:

非常真实!我只在 Josh Bloch 博客上阅读了静态内部构建器。谢谢你这个有见地的回答。

建造者模式

...,统一组装流程。5.应用场景创建一些复杂的对象时,对象内部的构建过程存在复杂变化。相同的构建过程,不同的执行顺序,产生不同结果时。不同配置的构建对象,产生不同结果时。6.优点封装性良好,隐藏内部构建细节。易... 查看详情

接口与抽象类的区别

...特点:抽象类是一个未完全实现逻辑的类,类中可以同时具有具体实现逻辑和抽象逻辑具体实现逻辑:具体实现方法,成员变量,静态方法等等抽象逻辑:抽象方法总结:具体实现逻辑提高复用性,抽象逻辑降低耦合;抽象类封... 查看详情

Protobuf-net 创建具有接口和抽象基类的类型模型

】Protobuf-net创建具有接口和抽象基类的类型模型【英文标题】:Protobuf-netcreatingtypemodelwithinterfaceandabstractbaseclass【发布时间】:2012-02-2113:20:26【问题描述】:我正在尝试使用出色的Protobuf-NET序列化模型。我不能使用属性(在编译... 查看详情

类与对象

...理解类与对象类:模具对象:模具的一个实物,其特点是具有唯一性2.类的构成类由三部分构成:    类的名称    类的属性:描述类的一系列数据    类的方法:类所具有的一系列行为3... 查看详情

浅谈工厂和建造者模式

...象。该Builder类是独立于其他对象的。1、需要生成的对象具有复杂的内部结构。2、需要生成的对象内部属性本身相互依赖。举个例子:1 查看详情

装饰器模式(代码片段)

...展,抑或是使用对象组合的方式。显然,直接修改对应的类的方式并不可取,在面向对象的设计中,我们应该尽量使用组合对象而不是继承对象来扩展和复用功能,装饰器模式就是基于对象组合的方式的。装饰器模式以对客户端... 查看详情

工厂模式

...义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类(抽象类)或接口。简单工厂模式又称为静态工厂方法模式,属于类的创建型模式,通常根据一个条件(参数)来返回不同的类的实例。它由三种角色组成... 查看详情

抽象工厂模式的优缺点和适用场景

抽象工厂模式的优点抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联,抽象工厂模式就可以在类内部对产品族的关联关系进... 查看详情

策略模式

...式策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使它们可以相互替换。策略模式是对算法的包装,是把算法使用和算法本身分开。策略模式通常是把一系列算法包装到一系列的策略里面,... 查看详情

设计模式---对象创建模式之构建器模式(builder)(代码片段)

...过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。对象的创建:Builder模式是为对象的创建而设计的模式创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象关注对象创建的各部分... 查看详情

java设计模式之迭代器学习与掌握(代码片段)

...访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式优点遍历任务交由迭代器完成,这简化了聚合类。访问一个聚合对象的内容而无须暴露它的内部表示。增加新的聚合类和... 查看详情

java设计模式之迭代器学习与掌握(代码片段)

...访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式优点遍历任务交由迭代器完成,这简化了聚合类。访问一个聚合对象的内容而无须暴露它的内部表示。增加新的聚合类和... 查看详情

具有一个随机类的数据集上的 CNN 分类器

】具有一个随机类的数据集上的CNN分类器【英文标题】:CNNclassifierondatasetwithonerandomclass【发布时间】:2018-05-2605:07:32【问题描述】:我正在尝试使用keras构建一个CNN分类器来分类图像是否为猴子。所以我有两个类别。一张有猴子... 查看详情

如何设计一个复杂的图形用户界面,同时使用构建器设计模式和抽象设计模式?

】如何设计一个复杂的图形用户界面,同时使用构建器设计模式和抽象设计模式?【英文标题】:HowcanIdesignacomplexGUIemployingbothbuilderdesignpatternandabstractdesignpattern?【发布时间】:2021-11-2323:13:28【问题描述】:我正在尝试创建一个... 查看详情

再战设计模式之建造者模式(代码片段)

...产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。由于实现了构建和装配的解耦。不同的构建器和不同的装配 查看详情

具有非虚拟成员的类的装饰器

】具有非虚拟成员的类的装饰器【英文标题】:Decoratorforclasswithnon-virtualmembers【发布时间】:2020-05-0123:10:48【问题描述】:我正在尝试将装饰器模式用于通常的目的,以便能够向我的类添加功能,同时保持对类层次结构的控制。... 查看详情

16行为型模式之模板模式

...mplateMethod模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。 应用场景TemplateMethod模式一般应用在具有以下条件... 查看详情

对象和类

...中事物的描述,对象通过属性和方法,来分别表示事物所具有静态属性和动态属性。  类——类是用来描述同一类型的对象的一种抽象的概念,类中定义了这一类对象所具有的静态和动态属性。  类可以看做是对象的一种抽... 查看详情