Skip to content

Instantly share code, notes, and snippets.

@Kcko
Created April 12, 2020 10:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Kcko/c2e9f492e1caa461f89c50600dac6257 to your computer and use it in GitHub Desktop.
Save Kcko/c2e9f492e1caa461f89c50600dac6257 to your computer and use it in GitHub Desktop.
<?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