2009-05-28 7 views
0

Es scheint, dass, während ich mich bemühe, OO Prinzipien beizubehalten, alles so künstlich oder unnatürlich scheint.Kann eine Webanwendung wirklich objektorientiert sein?

+0

Aufwendig bitte. – DevinB

+2

Oder, noch besser, stellen Sie eine aktuelle Frage. – cgp

+1

Ich merke, dass mein Kommentar eigentlich ziemlich vage war (oh Ironie). Könntest du bitte erläutern, in welchem ​​Sinn dein OO-Code künstlich oder unnatürlich wirkt? Welche Designmuster versuchen Sie zu verwenden und wie versagen sie Ihnen? – DevinB

Antwort

4

Wenn Sie Objekte als Konstrukte zum Festhalten von Zustandsinformationen betrachten, wird die Definition von "objektorientiert" durch die zustandslose Natur von Webanforderungen belastet. Statuslose Objekte sind jedoch immer noch Objekte, und Webanwendungen können in diesem Kontext OO-Designprinzipien folgen.

+0

ja, das ist was ich meinte. – zsharp

5

Mein Rat ist, nicht zu dogmatisch über OO Prinzipien zu werden. Sie funktionieren gut, aber manchmal, wenn Leute sagen, dass sie sich bemühen, OO-Prinzipien beizubehalten, kann es bedeuten, dass sie eine Klasse für alles schaffen, selbst wenn es nicht wirklich angemessen ist. Die Dinge werden auch weniger unnatürlich, wenn man sich an sie gewöhnt, wie "x = 3" ist natürlich für eine Aufgabe, obwohl jemand mit einem mathematischen Hintergrund es für unnatürlich halten würde.

Sie können auch einen Blick auf bestehende OO Web Apps und Design Patterns werfen. Ein übliches OO-Entwurfsmuster ist das MVC-Muster, das von Ruby on Rails und Django unterstützt (fast erzwungen) wird. Suchen Sie nach MVC.

+0

die ursprüngliche OO-MVC macht nur Sinn für GUIs, die häufiger Web-MVC ist mehr Schichten als OO. – Javier

+0

Javier, können Sie diesen Punkt in Bezug auf die Schichtung näher ausführen? – zsharp

+1

die GUI-MVC (beliebt bei SmallTalk) war modular und OOP; Jedes Modul hatte drei Objekte, die mehr oder weniger eng miteinander verbunden waren und bei Bedarf ein einzelnes Modul bildeten. Web-MVC, OTOH, besteht aus drei Ebenen, nicht Objekten, die jeweils einen Aspekt abstrahieren, um einen höheren Zugriff auf einen Teil (Speicher-, Präsentations- und Kontrollfluss) zu ermöglichen. Sie sind nicht in einem größeren Subsystem enthalten und stellen kein visuelles Element dar. Zusammen verwalten sie eine ganze App (oder Subapp). ganz andere Dinge, vielleicht nur auf einer philosophischen Ebene, nicht auf einer Design-Ebene. – Javier

Verwandte Themen