Skip to content

Instantly share code, notes, and snippets.

@Kcko

Kcko/strategy.php

Created Apr 12, 2020
Embed
What would you like to do?
<?php
/*
Definice
--------
Návrhový vzor Strategy definuje rodinu algoritmů, které zapouzdřuje, a umožňuje
jejich záměnu nezávisle na klientovi, který ji používá.
Pro implementaci tohoto návrhového vzoru jsou nutné následující kroky:¨
1. Definovat rozhraní, která budou muset implementovat všechny třídy z rodiny
algoritmů.
2. Implementovat minimálně 2 konkrétní implementace rozhraní z bodu 1.
3. Vytvořit způsob, kterým bude do objektu využívajícího tento vzor vložena
konkrétní implementace třídy z bodu 2.
4. Ve třídě využívající vzor Strategy vytvořit metodu, která své volání deleguje
na objekt vložený do třídy v bodě 3.
*/
interface Debugger
{
public function debug($message);
}
class DebuggerEcho implements Debugger
{
public function debug($message)
{
echo $message . PHP_EOL;
}
}
class DebuggerLog implements Debugger
{
// zapis do souboru, pro demonstraci jen s prefixem ...
public function debug($message)
{
echo 'LOG: ' . $message . PHP_EOL;
}
}
class DebuggerNull implements Debugger
{
public function debug($message)
{
}
}
// $library = new Library(new DebuggerEcho);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.