Skip to content

krystaDev/typescript-design-patterns

Repository files navigation

typescript-design-patterns

Strategy

Klient przychodzi i mówi:
Potrzebuje symulator psa.Chce wprowadzić różne rasy psów i chce aby aplikacja pozwala na wykonywanie takich czynności jak: szczczekanie, bieganie i wykonywnie sztuczki
Zatem pierwsza i "oczywiście" idealna propozycja w naszej głowie
Bazowa klasa abstracyjna zawierająca akcje "szczekanie", "bieganie" oraz "sztuczka" następnie klasy podrzędne reprezentujące rasy zawierające odpowiednie nazwy rasów piesków.
Wiec Zabieramy się do implemantacji powstaje poniższy kod:
export abstract class Dog {
  private name: string;
  public bark() {
    console.log('HAU HAU');
  }

  public run() {
    console.log('Dog is catching cat');
  }
}

export class WildDog extends Dog{
  public doTrick() {
    console.log('poop');
  }
}

export class TrainedDog extends Dog {

  public doTrick() {
    console.log('Roll');
  }
}

export class ToyDog extends Dog {

  public doTrick() {
    console.log('Make some funny noise');
  }
}
A o to kod wykonawczy powyższych klas:
const trainedDog = new TrainedDog();
const wildDog = new WildDog();
const toyDog = new ToyDog();

console.log('TRAINED DOG');
trainedDog.bark();
trainedDog.run();
trainedDog.doTrick();

console.log('WILD DOG');
wildDog.bark();
wildDog.run();
wildDog.doTrick();

console.log('TOY DOG');
toyDog.bark();
toyDog.run();
toyDog.doTrick();
oraz wynik wykonania naszego przykładu
TRAINED DOG
HAU HAU
Dog is catching cat
Roll
WILD DOG
HAU HAU
Dog is catching cat
poop
TOY DOG
HAU HAU  - co!?!? pies zabawka szczeka??
Dog is catching cat ?!
Make some funny noise - to jest ok - wykonuje śmieszny dźwięk

Jak widzimy, nie wszystkie pieski mogą wykonywać czynności w ten sam z góry określony sposób. Zatem, jak zaprojektów obiekty aby nie musieć powtarzać fragmentów kodu odpowiedzialne za te same zachowanie danej rasy/rodzaju pieska, jednocześnie pozwalajac na rozbudowe o kolejne zachowania

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published