Als «design-patterns» getaggte Fragen

Ein Entwurfsmuster ist eine allgemeine wiederverwendbare Lösung für ein häufig auftretendes Problem beim Software-Entwurf.




1
Verwenden von Friend-Klassen, um private Member-Funktionen in C ++ zu kapseln - bewährte Methoden oder Missbrauch?
Ich bemerkte also, dass es möglich ist, das Einfügen privater Funktionen in Kopfzeilen zu vermeiden, indem man Folgendes ausführt: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == …

6
DDD meets OOP: Wie implementiert man ein objektorientiertes Repository?
Eine typische Implementierung eines DDD-Repository sieht nicht besonders gut aus, zum Beispiel eine save()Methode: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Infrastrukturteil: package com.example.infrastructure; // imports... public class JdbcProductRepo implements …

2
Wie vermeide ich doppelte Datenstrukturen, wenn Teile einer App in verschiedenen Sprachen geschrieben sind?
Angenommen, Sie schreiben eine App in Java . Ihre App kommuniziert mit einem in Python geschriebenen API-Server . Der Python-Server kommuniziert mit einer SQL- Datenbank. Sie haben auch eine Website für Ihre App in JavaScript geschrieben . Mit 4 verschiedenen Sprachen ist es einfach, im Wesentlichen die gleichen Datenstrukturen zu …

4
Wie soll eine Klasse ihren Benutzern mitteilen, welche Untergruppe von Methoden sie implementiert?
Szenario Eine Webanwendung definiert eine Benutzer-Backend-Oberfläche IUserBackendmit den Methoden getUser (uid) createUser (UID) deleteUser (uid) setPassword (UID, Passwort) ... Verschiedene Benutzer-Backends (zB LDAP, SQL, ...) implementieren diese Schnittstelle, aber nicht jedes Backend kann alles. Beispielsweise erlaubt ein konkreter LDAP-Server dieser Webanwendung nicht, Benutzer zu löschen. Die LdapUserBackendimplementierende Klasse IUserBackendwird also …



1
Wie wird vorgegangen, wenn ein Lexer auf der Grundlage einer Grammatik geschrieben wird?
Während der Beantwortung der Frage Erläuterung zu Grammatiken, Lexika und Parsern lautete die Antwort: [...] Eine BNF-Grammatik enthält alle Regeln, die Sie für die lexikalische Analyse und Analyse benötigen. Das kam mir etwas seltsam vor, weil ich bis jetzt immer gedacht hatte, dass ein Lexer überhaupt nicht auf einer Grammatik …


3
Grundlegendes zum Flussmuster
Ich studiere gerade das Flussmuster und es gibt etwas, das ich in Bezug auf die Läden nicht verstehen kann . Was genau sind sie? Ich habe viele Artikel gelesen und es scheint, dass es sich um die Domain handelt. Bedeutet dies, dass dies der "abstrakte" Teil ist, der sich auf …

2
Warum ignoriert 'zip' den baumelnden Schwanz der Kollektion?
C # , Scala, Haskell, Lisp und Python haben dasselbe zipVerhalten: Wenn eine Sammlung länger ist, wird der Schwanz stillschweigend ignoriert. Es könnte auch eine Ausnahme sein, aber ich habe von keiner Sprache gehört, die diesen Ansatz verwendet. Das verwirrt mich. Kennt jemand den Grund, warum zipdas so ist? Ich …



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.