Skip to content

Commit 325b272

Browse files
committed
docs: reformulate german translation for Abstract Document
(#2275)
1 parent ca43940 commit 325b272

1 file changed

Lines changed: 108 additions & 76 deletions

File tree

localization/de/abstract-document/README.md

Lines changed: 108 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,48 @@
11
---
2-
title: "Abstract Document Pattern in Java: Vereinfachung der Datenverwaltung mit Flexibilität"
32
shortTitle: Abstract Document
4-
description: "Erkunden Sie das Abstract Document Design Pattern in Java. Lernen Sie seine Absicht, Erklärung, Anwendbarkeit, Vorteile kennen und sehen Sie reale Beispiele zur Implementierung flexibler und dynamischer Datenstrukturen."
5-
category: Strukturell
3+
category: Structural
64
language: de
75
tag:
8-
- Abstraktion
9-
- Entkopplung
10-
- Dynamische Typisierung
11-
- Kapselung
12-
- Erweiterbarkeit
13-
- Polymorphismus
6+
- Abstraction
7+
- Decoupling
8+
- Dynamic typing
9+
- Encapsulation
10+
- Extensibility
11+
- Polymorphism
1412
---
1513

16-
## Absicht des Abstract Document Design Patterns
14+
## Zweck
1715

18-
Das Abstract Document Design Pattern in Java ist ein wichtiges strukturelles Design Pattern, das eine konsistente Möglichkeit bietet, hierarchische und baumartige Datenstrukturen zu handhaben, indem es eine gemeinsame Schnittstelle für verschiedene Dokumenttypen definiert. Es trennt die Kernstruktur des Dokuments von spezifischen Datenformaten und ermöglicht dynamische Aktualisierungen und vereinfachte Wartung.
16+
Abstract Document ist ein wichtiges Struktur-Pattern, das ein einheitliches Handling von hierarchischen baumartige Datenstrukturen ermöglicht, indem es eine gemeinsame Schnittstelle für verschiedene Dokumenttypen definiert. Es trennt die Kernstruktur des Dokuments von spezifischen Datenformaten und ermöglicht so dynamische Aktualisierungen und einfachere Wartung.
1917

20-
## Detaillierte Erklärung des Abstract Document Patterns mit realen Beispielen
18+
## Detaillierte Erklärung
2119

22-
Das Abstract Document Design Pattern in Java ermöglicht die dynamische Handhabung nicht-statischer Eigenschaften. Dieses Pattern verwendet das Konzept der Traits, um Typsicherheit zu gewährleisten und Eigenschaften verschiedener Klassen in eine Menge von Schnittstellen zu trennen.
20+
Abstract Document erlaubt die dynamische Behandlung nicht-statischer Eigenschaften. Dieses Pattern verwendet das Konzept der Traits, um Typsicherheit zu gewährleisten und Eigenschaften verschiedener Klassen in verschiedene Schnittstellen abzuspalten.
2321

2422
Reales Beispiel
2523

26-
> Betrachten Sie ein Bibliothekssystem, das das Abstract Document Design Pattern in Java implementiert, wo Bücher verschiedene Formate und Attribute haben können: physische Bücher, eBooks und Hörbücher. Jedes Format hat einzigartige Eigenschaften, wie Seitenzahl für physische Bücher, Dateigröße für eBooks und Dauer für Hörbücher. Das Abstract Document Design Pattern ermöglicht es dem Bibliothekssystem, diese verschiedenen Formate flexibel zu verwalten. Durch die Verwendung dieses Patterns kann das System Eigenschaften dynamisch speichern und abrufen, ohne dass eine starre Struktur für jeden Buchtyp erforderlich ist, was es einfacher macht, neue Formate oder Attribute in der Zukunft hinzuzufügen, ohne dass wesentliche Änderungen am Codebase erforderlich sind.
24+
> Denken Sie an ein Bibliothekssystem, wo Bücher verschiedene Formate und Attribute haben können: physische Bücher, eBooks und Hörbücher. Jedes Format hat spezielle Eigenschaften, wie die Seitenzahl bei physischen Büchern, die Dateigröße bei eBooks oder die Spielzeit bei Hörbüchern. Das Abstract Document Design Pattern ermöglicht es dem Bibliothekssystem, diese verschiedenen Formate flexibel zu verwalten. Durch die Verwendung dieses Patterns kann das System Eigenschaften dynamisch speichern und abrufen, ohne dass eine starre Struktur für jeden Buchtyp erforderlich ist. Damit wird es einfacher, in der Zukunft neue Formate oder Attribute hinzuzufügen, ohne erhebliche Änderungen am Code vornehmen zu müssen.
2725
2826
In einfachen Worten
2927

30-
> Das Abstract Document Pattern ermöglicht das Anhängen von Eigenschaften an Objekte, ohne dass diese davon wissen.
28+
> Abstract Document erlaubt das Anhängen von Eigenschaften an Objekte, ohne dass diese davon wissen.
3129
3230
Wikipedia sagt
3331

34-
> Ein objektorientiertes strukturelles Design Pattern zur Organisation von Objekten in schwach typisierten Schlüssel-Wert-Speichern und zur Bereitstellung der Daten über typisierte Ansichten. Der Zweck des Patterns besteht darin, einen hohen Grad an Flexibilität zwischen Komponenten in einer stark typisierten Sprache zu erreichen, in der neue Eigenschaften zur Objektstruktur dynamisch hinzugefügt werden können, ohne die Unterstützung der Typsicherheit zu verlieren. Das Pattern verwendet Traits, um verschiedene Eigenschaften einer Klasse in verschiedene Schnittstellen zu trennen.
32+
> Ein objektorientiertes strukturelles Design Pattern zur Organisation von Objekten in schwach typisierten Schlüssel-Wert-Speichern mit Darstellung der Daten über typisierte Ansichten. Der Zweck des Patterns besteht darin, einen hohen Grad an Flexibilität zwischen Komponenten in einer stark typisierten Sprache zu erreichen, in der neue Eigenschaften zur Objektstruktur dynamisch hinzugefügt werden können, ohne die Unterstützung der Typsicherheit zu verlieren. Das Pattern verwendet Traits, um verschiedene Klasseneigenschaften in verschiedene Schnittstellen abzutrennen.
3533
36-
## Programmatisches Beispiel des Abstract Document Patterns in Java
34+
## Klassendiagramm
3735

38-
Betrachten Sie ein Auto, das aus mehreren Teilen besteht. Wir wissen jedoch nicht, ob das spezifische Auto wirklich alle Teile hat oder nur einige davon. Unsere Autos sind dynamisch und extrem flexibel.
36+
![Abstract Document](./etc/abstract-document.png "Abstract Document Traits und Domain")
37+
38+
## Beispielprogramm in Java
3939

40-
Lassen Sie uns zunächst die Basisklassen `Document` und `AbstractDocument` definieren. Sie sorgen im Wesentlichen dafür, dass das Objekt eine Eigenschaftsmap und eine beliebige Anzahl von Kindobjekten enthält.
40+
Betrachten Sie ein Auto, das aus mehreren Teilen besteht. Wir wissen jedoch nicht,
41+
ob das spezifische Auto wirklich alle Teile hat oder nur einige davon.
42+
Unsere Autos sind dynamisch und extrem flexibel.
43+
44+
Zunächst definieren wir die Basisklassen `Document` und `AbstractDocument`.
45+
Sie sorgen im Wesentlichen dafür, dass jedes Objekt eine Map von Eigenschaften und eine beliebige Anzahl von Kindobjekten enthält.
4146

4247
```java
4348
public interface Document {
@@ -80,10 +85,10 @@ public abstract class AbstractDocument implements Document {
8085
.map(constructor);
8186
}
8287

83-
// Andere Eigenschaften und Methoden...
88+
// Weitere Eigenschaften und Methoden...
8489
}
8590
```
86-
Als nächstes definieren wir ein Enum Property und eine Menge von Schnittstellen für Typ, Preis, Modell und Teile. Dies ermöglicht es uns, eine statisch aussehende Schnittstelle für unsere Car-Klasse zu erstellen.
91+
Als nächstes definieren wir ein Enum `Property` und je eine Schnittstelle für Typ, Preis, Modell und Teile. So können wir eine statisch aussehende Schnittstelle für unsere Klasse `Car` erstellen.
8792

8893
```java
8994
public enum Property {
@@ -120,84 +125,111 @@ public interface HasParts extends Document {
120125
}
121126
```
122127

123-
Jetzt sind wir bereit, das `Car` einzuführen.
128+
Nun können wir das `Car` einführen.
124129

125130
```java
126-
public static void main(String[] args) {
127-
LOGGER.info("Konstruktion von Teilen und Auto");
128-
129-
var wheelProperties = Map.of(
130-
Property.TYPE.toString(), "wheel",
131-
Property.MODEL.toString(), "15C",
132-
Property.PRICE.toString(), 100L);
133-
134-
var doorProperties = Map.of(
135-
Property.TYPE.toString(), "door",
136-
Property.MODEL.toString(), "Lambo",
137-
Property.PRICE.toString(), 300L);
138-
139-
var carProperties = Map.of(
140-
Property.MODEL.toString(), "300SL",
141-
Property.PRICE.toString(), 10000L,
142-
Property.PARTS.toString(), List.of(wheelProperties, doorProperties));
143-
144-
var car = new Car(carProperties);
145-
146-
LOGGER.info("Hier ist unser Auto:");
147-
LOGGER.info("-> Modell: {}", car.getModel().orElseThrow());
148-
LOGGER.info("-> Preis: {}", car.getPrice().orElseThrow());
149-
LOGGER.info("-> Teile: ");
131+
public class Car extends AbstractDocument implements HasModel, HasPrice, HasParts {
132+
133+
public Car(Map<String, Object> properties) {
134+
super(properties);
135+
}
136+
}
137+
```
138+
Und schließlich konstruieren und verwenden wir ein solches `Car`.
139+
140+
```java
141+
public static void main(String[] args) {
142+
LOGGER.info("Constructing parts and car");
143+
144+
var wheelProperties = Map.of(
145+
Property.TYPE.toString(), "wheel",
146+
Property.MODEL.toString(), "15C",
147+
Property.PRICE.toString(), 100L);
148+
149+
var doorProperties = Map.of(
150+
Property.TYPE.toString(), "door",
151+
Property.MODEL.toString(), "Lambo",
152+
Property.PRICE.toString(), 300L);
153+
154+
var carProperties = Map.of(
155+
Property.MODEL.toString(), "300SL",
156+
Property.PRICE.toString(), 10000L,
157+
Property.PARTS.toString(), List.of(wheelProperties, doorProperties));
158+
159+
var car = new Car(carProperties);
160+
161+
LOGGER.info("Here is our car:");
162+
LOGGER.info("-> model: {}", car.getModel().orElseThrow());
163+
LOGGER.info("-> price: {}", car.getPrice().orElseThrow());
164+
LOGGER.info("-> parts: ");
150165
car.getParts().forEach(p -> LOGGER.info("\t{}/{}/{}",
151-
p.getType().orElse(null),
166+
p.getType().orElse(null),
152167
p.getModel().orElse(null),
153168
p.getPrice().orElse(null))
154169
);
155170
}
156171
```
157-
Die Programmausgabe:
172+
Programmausgabe:
158173

159174
```
160-
07:21:57.391 [main] INFO com.iluwatar.abstractdocument.App -- Konstruktion von Teilen und Auto
161-
07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- Hier ist unser Auto:
162-
07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- -> Modell: 300SL
163-
07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> Preis: 10000
164-
07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> Teile:
165-
07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- Rad/15C/100
166-
07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- Tür/Lambo/300
175+
07:21:57.391 [main] INFO com.iluwatar.abstractdocument.App -- Constructing parts and car
176+
07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- Here is our car:
177+
07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- -> model: 300SL
178+
07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> price: 10000
179+
07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> parts:
180+
07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- wheel/15C/100
181+
07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- door/Lambo/300
167182
```
168-
## Abstract Document Pattern Klassendiagramm
169-
170-
![Abstract Document](./etc/abstract-document.png "Abstract Document Traits und Domain")
171183

172-
## Wann sollte das Abstract Document Pattern in Java verwendet werden?
184+
## Verwendung
173185

174-
Das Abstract Document Design Pattern ist besonders vorteilhaft in Szenarien, die eine Verwaltung unterschiedlicher Dokumenttypen in Java erfordern, die einige gemeinsame Attribute oder Verhaltensweisen teilen, aber auch einzigartige Attribute oder Verhaltensweisen haben, die spezifisch für ihren Typ sind. Hier sind einige Szenarien, in denen das Abstract Document Design Pattern anwendbar ist:
186+
Abstract Document ist besonders vorteilhaft in Szenarien, die eine Verwaltung unterschiedlicher
187+
Dokumenttypen erfordern, die zwar einige gemeinsame Attribute oder Verhaltensweisen teilen,
188+
aber auch typspezifische Eigenschaften haben. Hier sind einige Beispiele:
175189

176190
* **Content-Management-Systeme (CMS)**: In einem CMS könnten verschiedene Arten von Inhalten wie Artikel, Bilder, Videos usw. vorkommen. Jede Inhaltsart könnte gemeinsame Attribute wie Erstellungsdatum, Autor und Tags haben, aber auch spezifische Attribute wie Bildabmessungen für Bilder oder Videodauer für Videos.
177191

178-
* **Dateisysteme**: Wenn Sie ein Dateisystem entwerfen, in dem unterschiedliche Dateitypen verwaltet werden müssen, wie Dokumente, Bilder, Audiodateien und Verzeichnisse, kann das Abstract Document Pattern helfen, eine konsistente Möglichkeit zum Zugriff auf Attribute wie Dateigröße, Erstellungsdatum usw. zu bieten, während spezifische Attribute wie Bildauflösung oder Audiodauer berücksichtigt werden.
192+
* **Dateisysteme**: Wenn Sie ein Dateisystem entwerfen, in dem unterschiedliche Dateitypen verwaltet werden müssen, wie Dokumente, Bilder, Audiodateien und Verzeichnisse, kann das Pattern helfen, einen einheitlichen Zugriff auf Attribute wie Dateigröße, Erstellungsdatum usw. zu bieten, aber zugleich spezifische Attribute wie Bildauflösung oder Audiodauer zu berücksichtigen.
179193

180-
* **E-Commerce-Systeme**: Eine E-Commerce-Plattform könnte verschiedene Produkttypen haben, wie physische Produkte, digitale Downloads und Abonnements. Jeder Typ könnte gemeinsame Attribute wie Name, Preis und Beschreibung haben, aber auch einzigartige Attribute wie Versandgewicht für physische Produkte oder Download-Link für digitale Produkte.
194+
* **E-Commerce-Systeme**: Eine E-Commerce-Plattform kann verschiedene Produkttypen haben,
195+
wie physische Produkte, digitale Downloads und Abonnements.
196+
Alle Typen haben gemeinsame Attribute wie Name, Preis und Beschreibung,
197+
aber auch einzigartige Attribute wie Versandgewicht für physische Produkte
198+
oder Download-Link für digitale Produkte.
181199

182-
* **Medizinische Aufzeichnungssysteme**: Im Gesundheitswesen könnten Patientenakten verschiedene Datentypen enthalten, wie demografische Daten, medizinische Vorgeschichte, Testergebnisse und Rezepte. Das Abstract Document Pattern kann helfen, gemeinsame Attribute wie Patienten-ID und Geburtsdatum zu verwalten, während spezialisierte Attribute wie Testergebnisse oder verschriebene Medikamente berücksichtigt werden.
200+
* **Medizindatensysteme**: Im Gesundheitswesen enthalten Patientenakten verschiedene
201+
Datentypen wie demografische Daten, medizinische Vorgeschichte, Testergebnisse und Rezepte.
202+
Das Abstract Document Pattern kann helfen, gemeinsame Attribute wie Patienten-ID und Geburtsdatum zu
203+
verwalten und zusätzlich spezielle Attribute wie Testergebnisse oder verschriebene Medikamente zu berücksichtigt werden.
183204

184-
* **Konfigurationsmanagement**: Bei der Verwaltung von Konfigurationseinstellungen für Softwareanwendungen gibt es möglicherweise verschiedene Arten von Konfigurationselementen, jedes mit einer eigenen Reihe von Attributen. Das Abstract Document Pattern kann verwendet werden, um diese Konfigurationselemente zu verwalten, während eine konsistente Möglichkeit zum Zugriff auf und Bearbeiten der Attribute sichergestellt wird.
205+
* **Konfigurationsmanagement**: Bei der Verwaltung von Konfigurationseinstellungen für
206+
Software gibt es verschiedene Arten von Konfigurationselementen, jedes mit einer eigenen Reihe
207+
von Attributen. Mit dem Abstract Document Pattern können diese Konfigurationselemente
208+
konsistent verwaltet werden.
185209

186-
* **Bildungsplattformen**: Bildungssysteme könnten verschiedene Arten von Lernmaterialien wie textbasierte Inhalte, Videos, Quizze und Aufgaben haben. Gemeinsame Attribute wie Titel, Autor und Veröffentlichungsdatum können geteilt werden, während spezifische Attribute wie Videodauer oder Aufgabenfälligkeit für jeden Typ einzigartig sind.
210+
* **Bildungsplattformen**: Bildungssysteme nutzen verschiedene Arten von Lernmaterialien wie textbasierte Inhalte,
211+
Videos, Quiz und Übungsaufgaben. Gemeinsame Attribute können Titel, Autor und Veröffentlichungsdatum sein,
212+
während spezifische Attribute wie Videodauer oder Aufgabenfälligkeit typabhängig sind.
187213

188-
* **Projektmanagement-Tools**: In Projektmanagement-Anwendungen könnten unterschiedliche Aufgabenarten wie To-Do-Items, Meilensteine und Probleme vorliegen. Das Abstract Document Pattern könnte verwendet werden, um allgemeine Attribute wie Aufgabenname und Zuweisung zu handhaben, während spezifische Attribute wie Meilensteindaten oder Problemprioritäten zugelassen werden.
214+
* **Projektmanagement-Tools**: In Projektmanagement-Anwendungen können unterschiedliche Aufgabenarten
215+
wie To-Dos, Meilensteine und Probleme vorliegen. Das Abstract Document Pattern kann verwendet werden, um allgemeine
216+
Attribute wie Aufgabenname und Zuständigkeit zu handhaben, während spezifische Attribute wie Meilensteindaten oder
217+
Aufgabenprioritäten zugelassen sind.
189218

190-
* **Dokumente haben vielfältige und sich entwickelnde Attributstrukturen.**
219+
* **Dokumente haben vielfältige und sich verändernde Attributstrukturen.**
191220

192-
* **Dynamisches Hinzufügen neuer Eigenschaften ist eine häufige Anforderung.**
221+
* **Häufig ist es erforderlich, neue Eigenschaften dynamisch hinzuzufügen.**
193222

194-
* **Entkopplung des Datenzugriffs von spezifischen Formaten ist entscheidend.**
223+
* **Entscheidend ist die Entkopplung des Datenzugriffs von spezifischen Formaten.**
195224

196-
* **Wartbarkeit und Flexibilität sind entscheidend für die Codebasis.**
225+
* **Wartbarkeit und Flexibilität sind wesentlich für die Codebasis.**
197226

198-
Die Hauptidee hinter dem Abstract Document Design Pattern ist es, eine flexible und erweiterbare Möglichkeit zur Verwaltung unterschiedlicher Dokumenttypen oder Entitäten mit gemeinsamen und spezifischen Attributen bereitzustellen. Durch die Definition einer gemeinsamen Schnittstelle und deren Implementierung über verschiedene Dokumenttypen hinweg können Sie einen besser organisierten und konsistenteren Ansatz zur Handhabung komplexer Datenstrukturen erreichen.
227+
Die Kernidee des Abstract Document Pattern ist es, eine flexible und erweiterbare Möglichkeit zur Verwaltung
228+
unterschiedlicher Dokumenttypen oder Entitäten mit gemeinsamen und spezifischen Attributen bereitzustellen.
229+
Durch die Definition einer gemeinsamen Schnittstelle und deren Implementierung über verschiedene Dokumenttypen
230+
hinweg können Sie komplexe Datenstrukturen besser organisiert und einheitlich verarbeiten.
199231

200-
## Vorteile und Abwägungen des Abstract Document Patterns
232+
## Vor- und Nachteile
201233

202234
**Vorteile:**
203235

@@ -206,12 +238,12 @@ Die Hauptidee hinter dem Abstract Document Design Pattern ist es, eine flexible
206238
* **Wartbarkeit**: Fördert sauberen und anpassungsfähigen Code durch Trennung der Verantwortlichkeiten.
207239
* **Wiederverwendbarkeit**: Typspezifische Ansichten ermöglichen eine Wiederverwendung des Codes zum Zugriff auf bestimmte Attributtypen.
208240

209-
**Abwägungen:**
241+
**Nachteile:**
210242

211-
* **Komplexität**: Erfordert die Definition von Schnittstellen und Ansichten, was zu zusätzlichem Implementierungsaufwand führt.
212-
* **Leistung**: Kann im Vergleich zum direkten Datenzugriff zu leichtem Leistungsaufwand führen.
243+
* **Komplexität**: Die Definition von Schnittstellen und spezifischen Ansichten erfordert zusätzlichen Implementierungsaufwand.
244+
* **Performance**: Leicht verringerte Performance im Vergleich zum direkten Datenzugriff möglich.
213245

214-
## Quellen und Danksagungen
246+
## Quellen
215247

216248
* [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0pvKI)
217249
* [Java Design Patterns: A Hands-On Experience with Real-World Examples](https://amzn.to/3yhh525)

0 commit comments

Comments
 (0)