Ich habe kürzlich ein internes Backend auf der Basis von Hexagonal Architecture geschrieben und es funktioniert ziemlich gut (ich werde es tun), also werde ich versuchen, die grundlegende Essenz super einfach zu schreiben.
from zope.interface import Interface
from .base import Entity, ValueObject
class Post(Entity):
u""" Post Model """
...
class Tag(ValueObject):
u""" Tag Model """
...
class ITagService(Interface): # specification
u""" Tag management domain service """
def add_tag(post, tag):
u""" add tag to a post """
def remove_tag(post, tag):
u""" remove tag from a post """
Weitere Informationen zu ValueObject und zope.interface finden Sie in den folgenden Artikeln.
from zope.interface import implementer
from .domain.model import ITagService
@implementer(ITagService) # implement TagService as described in ITagService
class TagService(object):
u""" TagService using xxx """
def add_tag(self, post, tag):
u""" add tag to a post """
# do some actual staff
def remove_tag(self, post, tag):
u""" remove tag from a post """
# do some actual staff
@implementer(ITagService)
class DummyTagService(object): # i.e. memory based implementation
u""" TagService for tests """
def add_tag(self, post, tag):
u""" add tag to a post """
# do some actual staff
def remove_tag(self, post, tag):
u""" remove tag from a post """
# do some actual staff
from .infrastructure import TagService
def add_tag(post, tag):
srv = TagService()
srv.add_tag(post, tag) # use TagService as described in ITagService
Ich wurde intern gefragt: "Benötigen Sie ITagService?". Ich denke jedoch, dass die Rolle der Domänenschicht darin besteht, jeder Anwendungsschicht und jeder Infrastrukturschicht "Spezifikationen" zu präsentieren. .. Mit der Domänenschicht kann die Infrastrukturschicht implementiert werden, um diese Schnittstelle bereitzustellen, und die App-Schicht kann das Modell gemäß dieser Schnittstelle verwenden.
Wenn Sie es mit der ECMAScript-Spezifikation vergleichen,
Mit der dazwischen liegenden Domain-Schicht können sowohl Feature-Provider als auch Benutzer voneinander profitieren.
Recommended Posts