Verantwortung basierte Modellierung im Vergleich Gründe Klasse zu ändern
-
05-07-2019 - |
Frage
dieser Text lese ich
Seien Sie für eine Komponente Warnung, die gerade ist eine glorifizierte Verantwortung. EIN Komponente soll ein erfassen Abstraktion, die einen Zweck in der hat System. Es kann passieren, dass, was erscheint in einem Moment als eine sinnvolle Komponente ist eigentlich nur eine einzige Verantwortung links auf seinem eigenen. Das Verantwortung könnte eine zugeordnet werden Komponente.
Das verwirrt mich. Wenn eine Klasse sollte nur einen Grund haben zu ändern, scheint es, wie es eine Verantwortung haben sollte. Aber jetzt scheint es, ich das zu eng nehme. Kann irgendwie eine Erklärung der Verantwortung und Vernunft gibt im Rahmen der Verantwortung basierte Modellierung zu ändern? Kann eine Klasse mehr als zwei Aufgaben hat und hat noch einen Grund (oder umgekehrt) zu ändern?
Lösung
Lesen Sie mehr über Class-Responsibility-Collaboration-Modellierung (oder Design)
http://www.agilemodeling.com/artifacts/crcModel.htm
http://alistair.cockburn.us/Using+CRC+cards
http: //users.csc.calpoly. edu / ~ jdalbey / SWE / Casestudies / ATMSim / CRCmodel.html
http://c2.com/doc/oopsla89/paper.html
Eine Klasse kann mehrere Aufgaben haben. Es stellt immer ein einziges „Ding“.
Der „ein Grund zu ändern“ Regel gilt nicht für Verantwortung. Period.
Der „ein Grund zu ändern“ Regel verwendet werden soll, wie folgt.
-
Es bedeutet nicht "1". Es bedeutet "so wenig wie möglich".
-
Sie gilt für die „Schnittstelle“ oder „zugrunde liegende Abstraktion“ oder „Konzept“ für eine Klasse. Eine Klasse sollte einige Konzepte einzukapseln. Wenn das Kernkonzept ändert, werden die Klassenänderungen.
-
Viele einfachen Dinge sind besser als ein paar komplexen Dinge. Es ist einfacher zu rekombinieren und einfache Dinge zu ändern.
-
Im Inneren jedes komplexe Sache gibt viele einfache Dinge versuchen, frei zu sein.
-
Es ist schwer, „einfach“ zu definieren, sondern „ein Konzept“ ist in der Nähe. „Eine Sache zu ändern“ ist auch ein hilfreicher Test für „Einfachheit“.
-
Schließlich "ein Grund zu ändern" bedeutet nicht wörtlich "1".
Andere Tipps
So wie ich es verstehe, ist die Gefahr von „eine Verantwortung an eine Komponente zu verherrlichen“ bedeutet, dass Sie vorsichtig sein müssen, nicht Verantwortung zu Systemkomponenten übersetzen direkt.
Zum Beispiel, in einem E-Mail-System kann der Benutzer nähert sich das System mit dem Ziel, eine Nachricht an einen Empfänger zu initiieren. Es ist die Verantwortung des Systems macht es möglich.
Der Benutzer kann Ansatz auch das System eine E-Mail zu lesen und zu beantworten. Es ist die Verantwortung des Systems macht es möglich, auch.
Aber bedeutet dies, dass es müssen zwei Komponenten sein „initiieren neue E-Mail“ und „Antwort auf eine E-Mail“ im System? Nein. Eine allgemeine „komponieren E-Mail“ -Komponente der Lage wäre, beide Anforderungen zu behandeln.
So in diesem Fall die Komponente „komponiert E-Mail“ ist verantwortlich für die Benutzerziele „initiieren neue E-Mail“ und „antworten auf Mail“. Aber es müßte nur dann, wenn Änderungen seines Kernkonzept ändern ( „wie E-Mails bestehen“).
Schauen Sie noch einmal genau auf dem folgenden Satz von Cockburn: „Eine Komponente soll eine Abstraktion erfassen, die ein Ziel im System hat“. Ein Zweck im System (Grund zu ändern) ist nicht die gleiche wie der Zweck einen Benutzer Ziel der Befriedigung (Verantwortung).
Um die lange Geschichte kurz zu machen: Zu meinem Verständnis eine Komponente im Idealfall ein Kernkonzept hat. Es kann mehrere Aufgaben haben. Aber wie ich es sehe, kann die eine Verantwortung nicht mehr als eine Komponente zugeordnet werden.