# Creational Patterns

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lex-category-creational-patterns

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to.

### Cloneable Template Object

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that a prototype object support being copied to produce new instances.

Referenced by
[Prototype Pattern](https://banes-lab.com/records/arch/prototype-pattern.md)

### Complex Construction

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree of complexity in assembling an object that motivates a step-by-step builder.

Referenced by
[Builder Pattern](https://banes-lab.com/records/arch/builder-pattern.md)

### Complex Factory Hierarchies

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Building elaborate parallel factory class hierarchies where cloning an existing configured instance would suffice.

Referenced by
[Prototype Pattern](https://banes-lab.com/records/arch/prototype-pattern.md)

### Concrete Constructor Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Instantiating concrete classes directly with constructors, coupling callers to specific implementations.

Referenced by
[Factory Method Pattern](https://banes-lab.com/records/arch/factory-method-pattern.md)

### Controlled Instantiation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to govern how and when an object is created.

Referenced by
[Singleton Pattern](https://banes-lab.com/records/arch/singleton-pattern.md)

### Copy Semantics

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree of care required to define correct deep versus shallow copying when cloning objects.

Referenced by
[Prototype Pattern](https://banes-lab.com/records/arch/prototype-pattern.md)

### Creation Variation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
A precondition that different variants of a product must be produced depending on runtime context.

Referenced by
[Factory Pattern](https://banes-lab.com/records/arch/factory-pattern.md)

### Deferred Instantiation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to let subclasses decide which class to instantiate, deferring the choice from the base class.

Referenced by
[Factory Method Pattern](https://banes-lab.com/records/arch/factory-method-pattern.md)

### Dynamic Object Creation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to create new objects at runtime by cloning existing configured instances.

Referenced by
[Prototype Pattern](https://banes-lab.com/records/arch/prototype-pattern.md)

### Family-Level Replacement

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to swap an entire family of related products by changing a single factory.

Referenced by
[Abstract Factory Pattern](https://banes-lab.com/records/arch/abstract-factory-pattern.md)

### Global Mutable State

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Exposing global variables that any code can mutate, creating hidden coupling and nondeterminism.

Referenced by
[Singleton Pattern](https://banes-lab.com/records/arch/singleton-pattern.md)

### Inheritance Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree to which relying on subclassing to vary creation adds to the inheritance hierarchy's complexity.

Referenced by
[Factory Method Pattern](https://banes-lab.com/records/arch/factory-method-pattern.md)

### Mixed Product Families

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Combining products from different incompatible families, producing inconsistent sets of objects.

Referenced by
[Abstract Factory Pattern](https://banes-lab.com/records/arch/abstract-factory-pattern.md)

### Polymorphic Construction

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to create objects through a common interface without naming their concrete classes.

Referenced by
[Factory Pattern](https://banes-lab.com/records/arch/factory-pattern.md)

### Related Product Variants

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that products form families of related variants meant to be used together.

Referenced by
[Abstract Factory Pattern](https://banes-lab.com/records/arch/abstract-factory-pattern.md)

### Scattered Construction Logic

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Spreading object-creation logic across many call sites instead of centralizing it in a factory.

Referenced by
[Factory Pattern](https://banes-lab.com/records/arch/factory-pattern.md)

### Shared Resource Access

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to give many callers coordinated access to one shared resource.

Referenced by
[Singleton Pattern](https://banes-lab.com/records/arch/singleton-pattern.md)

### Single-Instance Need

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
A precondition that exactly one instance of a type must exist across the system.

Referenced by
[Singleton Pattern](https://banes-lab.com/records/arch/singleton-pattern.md)

### Subclass-Controlled Creation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that subclasses determine which concrete product a creator instantiates.

Referenced by
[Factory Method Pattern](https://banes-lab.com/records/arch/factory-method-pattern.md)

### Telescoping Constructor

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Overloading constructors with ever more parameters to cover optional fields, producing unreadable call sites.

Referenced by
[Builder Pattern](https://banes-lab.com/records/arch/builder-pattern.md)

### Valid Object Creation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Creational Patterns](https://banes-lab.com/ontology/lexicon/lex-category-creational-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to construct an object only once all its required parts are supplied and validated.

Referenced by
[Builder Pattern](https://banes-lab.com/records/arch/builder-pattern.md)

## Links to

- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
- [Prototype Pattern](https://banes-lab.com/records/arch/prototype-pattern.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Builder Pattern](https://banes-lab.com/records/arch/builder-pattern.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Factory Method Pattern](https://banes-lab.com/records/arch/factory-method-pattern.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Singleton Pattern](https://banes-lab.com/records/arch/singleton-pattern.md)
- [Factory Pattern](https://banes-lab.com/records/arch/factory-pattern.md)
- [Abstract Factory Pattern](https://banes-lab.com/records/arch/abstract-factory-pattern.md)
