Ein Entwurfsmuster ist ein konzeptionelles Modell, das Ihnen hilft, Entwurfsprobleme in verschiedenen Zusammenhängen zu lösen. Es ist wie eine wiederverwendbare Vorlage, die Sie auf einen strukturierenden Code anwenden können.
Bei der Arbeit an einer Projektist es wichtig, dass Sie das Rad nicht neu erfinden. Wenn sich eine Lösung für ein Problem bewährt hat, erspart Ihnen die Wiederverwendung viel Zeit und einige Kopfschmerzen. Für den Fall von Systemarchitektur-Dilemmata haben wir einige Muster entwickelt, die den Entwurfsprozess erleichtern.
Was ist ein Entwurfsmuster?
Ein Entwurfsmuster ist ein konzeptionelles Modell, das Ihnen hilft, Entwurfsprobleme in verschiedenen Zusammenhängen zu lösen. Es ist wie eine wiederverwendbare Vorlage, die Sie auf eine Strukturierung anwenden können Code. Die Sache ist die: Entwurfsmuster sind gut dokumentiert, bewährt und allgemein bekannt. Mit anderen Worten: Verwenden Sie ein geeignetes Entwurfsmuster und seien Sie sicher, dass andere Entwurfsmuster-Insider (aka Ihre Kollegen) Ihre Ideen problemlos verstehen werden.
Sind Sie neugierig geworden? Hier kommt das Strategy Design Pattern.
Das Strategieentwurfsmuster:
definiert eine Familie von Algorithmen,
implementiert jeden der Algorithmen als eine separate Einheit,
ermöglicht es, jeden der Algorithmen in einem bestimmten Kontext austauschbar zu verwenden.
Beispiel aus dem wirklichen Leben? Authentifizierung
In einer unserer Anwendungen haben wir einige Strategien zur Authentifizierung von Anfragen implementiert. Wir erlauben die Authentifizierung mit Cookies, JWT-Tokens und API-Schlüsseln. Das klingt für mich nach einer Familie von Algorithmen.
Werfen wir einen Blick auf eine Beispielimplementierung.
Wir haben unsere Familie von Authentifizierungsalgorithmen in drei separate Klassen unterteilt. Jede Klasse definiert das konkrete Verhalten; in ihr werden alle Implementierungsdetails festgelegt:
Modul AuthenticationStrategien
class CookiesAuthentifizierung
def self.authenticate_request(Anfrage)
puts "Ich implementiere einen Cookie-Authentifizierungsalgorithmus"
end
end
class JWTAuthentication
def self.authenticate_request(anfrage)
puts "Ich implementiere einen JWT-Authentifizierungsalgorithmus"
end
end
class ApiKeyAuthentication
def self.authenticate_request(request)
puts "Ich implementiere einen Api-Schlüssel-Authentifizierungsalgorithmus"
end
end
end
Dann haben wir eine Kontext/Client-Klasse:
class Authentifizierung
def self.authenticate(authentication_strategy, request)
authentication_strategy.authenticate_request(anfrage)
end
end
Ich implementiere einen Cookie-Authentifizierungsalgorithmus Ich implementiere einen jwt-Authentifizierungsalgorithmus Ich implementiere einen Api-Schlüssel-Authentifizierungsalgorithmus
Zusammenfassende Betrachtung
Entwurfsmuster sind nützliche Werkzeuge zur Lösung von Architekturproblemen,
Die Kenntnis von Entwurfsmustern verbessert die Kommunikation über die Systemarchitektur mit anderen Entwicklern,
Das Strategy Design Pattern eignet sich für Ihre Bedürfnisse, wenn Sie eine Reihe von Algorithmen haben, die in einem bestimmten Kontext austauschbar verwendet werden können.