Dieser Artikel ist ein persönliches Studienmemo. Ich schreibe einen Artikel, der von der Besessenheit getrieben ist, dass das, was ich eingebe, ausgegeben werden muss. Ich schreibe diesen Artikel über Qiita in der Hoffnung, dass jemand, der damit vertraut ist, auf Fehler hinweisen und Ratschläge geben kann.
Ich lebe ein Berufsleben als Ingenieur, aber ich habe nicht richtig über Entwurfsmuster gelernt, also habe ich versucht zu studieren.
Was ist hier beschrieben https://github.com/ck-fm0211/notes_desigh_pattern Ich lade auf.
Ich habe über Entwurfsmuster (persönliches Memo) Teil 1 studiert Ich habe über Entwurfsmuster (persönliches Memo) Teil 2 studiert Ich habe über Entwurfsmuster (persönliches Memo) Teil 3 studiert Ich habe über Entwurfsmuster (persönliches Memo) Teil 4 studiert Ich habe über Entwurfsmuster (persönliches Memo) Teil 5 studiert
――Das Muster der Kette der Verantwortlichkeit ist ein Muster, das Sie sich einen Zustand vorstellen lässt, in dem diejenigen, die "Verantwortung" haben, in einer "Ketten" -Form verbunden sind. --Beispiel:
――Denken Sie über die Entscheidung in der Schule nach --Student A "Wie viel kostet der Snack für den Ausflug?" --Rookie-Lehrer "bis zu 300 Yen" ← Genehmigung des neuen Lehrers --Student B "Passen Bananen in einen Snack?" --Rookie Lehrer "Ich kann nicht beurteilen" --Veteranischer Lehrer "Ich kann den Snack nicht betreten" ← Entscheidung des Veteranenlehrers --Students Eltern "Kann ich ein Handy haben?" --Rookie-Lehrer / Veteranenlehrer "Ich kann nicht beurteilen"
――Die Kette, dass "die verantwortliche Person nach eigenem Ermessen entscheidet, was sie beurteilen kann, und das Urteil der nächsten verantwortlichen Person überlässt, wenn sie nicht selbst beurteilen kann"
# -*- coding:utf-8 -*-
from abc import ABCMeta, abstractmethod
class Responsible(metaclass=ABCMeta):
def __init__(self, responsible_person: str):
self._responsible_person = responsible_person
self._next_level: Responsible = None
@abstractmethod
def set_next(self, next_level):
self._next_level = next_level
return self._next_level
@abstractmethod
def be_able_to_judge(self, question: Question) -> bool:
pass
@staticmethod
@abstractmethod
def judge(question: Question):
pass
@abstractmethod
def put_question(self, question: Question):
if self.be_able_to_judge(question):
self.judge(question)
elif self._next_level is not None:
self._next_level.put_question(question)
else:
print("Niemand konnte beurteilen. Versuch es.")
class Question:
"""
Eine String-Instanz, die den Inhalt der Frage als Feld speichert.
Es hat eine Level-Instanz, die die Schwierigkeit der Frage darstellt.
"""
def __init__(self, question: str, level: Level):
self._question = question
self._level = level
class Level:
"""
Ein Wert vom Typ int, der den Schwierigkeitsgrad als Feld darstellt.
LessThan vergleicht seine eigene Schwierigkeit mit der Schwierigkeit des Argument-Level-Objekts(Level level)Habe eine Methode
"""
def __init__(self, level: int):
self._level: int = level
def less_than(self, level: Level):
pass
class RookieTeachee(Responsible):
def __init__(self, responsible_person):
super().__init__(responsible_person)
self._level = Level(2)
def be_able_to_judge(self, question: Question):
if question._level.less_than(self._level):
return True
return False
@staticmethod
def judge(question: Question):
#・ ・ ・
――Durch die Aufteilung jeder "verantwortlichen Person" in Klassen kann die Rolle jeder verantwortlichen Person eingeschränkt werden. ――Durch Klärung der Rolle der verantwortlichen Person und Aufteilung der verantwortlichen Person in Klassen wird es möglich, die „Kette“, die den Fluss des Urteils darstellt, flexibler neu anzuordnen. ――Auf der anderen Seite ist es möglich, dass sich die Verarbeitungsgeschwindigkeit verlangsamt, da sie jedes Mal der Kette folgt. ―― Je nach Situation muss beurteilt werden, ob ein geschwindigkeitsorientiertes Programm oder Flexibilität erforderlich ist.
--Das Fassadenmuster ist ein Muster, mit dem Sie einfach mehrere vorhandene Klassen in Kombination verwenden können, indem Sie eine Klasse erstellen, die als "Fenster" dient.
»Ich bin in die Bibliothek gegangen, um mir ein Buch auszuleihen, aber ich weiß nicht, wo es ist. ――Ich habe eine Liste mit Büchern und ein Leihbuch, aber ich weiß nicht, wie ich sie verwenden soll.
# -*- coding:utf-8 -*-
class BookList:
"""Sammlungsliste"""
@staticmethod
def search_book(book_name):
location = None
#Suche nach Buchnamen
#Gibt den Speicherort zurück, falls vorhanden, andernfalls null
return location
class LendingList:
"""Leihbuch"""
@staticmethod
def check(book_name):
#Überprüfen Sie das Leihbuch
#Gibt true zurück, wenn gemietet, andernfalls false
return True
class Visitor:
@staticmethod
def main(args):
#Wo ist das Buch, das Sie ausleihen möchten?
#Wann und wo wenden Sie welche Methode an?
pass
class Visitor:
@staticmethod
def main(args):
#Fragen Sie den Angestellten am Schalter nach dem Standort
shisho = Librarian()
location = shisho.search_book("Bilderbuch für Insekten")
if location == "Ausleihe":
print("Ist es ausgeliehen! !!")
elif location == "Das Buch ist nicht im Besitz":
print("Ist es nicht! !! !!")
else:
print("Vielen Dank")
class Librarian:
@staticmethod
def search_book(book_name):
#Finde ein Buch
location = BookList.search_book(book_name)
#Wenn der Ort des Buches nicht None ist (im Besitz)
if location is not None:
#Überprüfen Sie, ob es ausgeliehen ist
if LendingList.check(book_name):
#Bei der Anmietung
return "Ausleihe"
else:
#Wenn nicht ausgeliehen
return location
else:
#Wenn nicht im Besitz
return "Das Buch ist nicht im Besitz"
# -*- coding:utf-8 -*-
class Concierge:
def __init__(self):
self._user_dict = {}
def add_user(self, user: User):
self._user_dict[user.get_name()] = user
@staticmethod
def consultation(colleagueInLove: User, secretLover: User):
possibility = 0
#Ableitung der Möglichkeit unter Berücksichtigung verschiedener Situationen
return possibility
class User:
def __init__(self):
self._name = None
def get_name(self):
return self._name
class John(User):
def __init__(self):
super().__init__()
self._name = "John"
self._secret_lover = None
self._tension = None
self._mediator = Concierge()
def get_name(self):
return self._name
def set_secret_lover(self, user: User):
self._secret_lover = user
def needs_advice(self):
self._tension = self._mediator.consultation(self, self._secret_lover)
Recommended Posts