Skip to content

Latest commit

 

History

History
122 lines (91 loc) · 2.99 KB

abstractFactory.md

File metadata and controls

122 lines (91 loc) · 2.99 KB
@startuml

AbstractFactoryDemo - AnimalFactory  : create >

AnimalFactory <|-- SeaAnimalFactory : getAnimalFactory() >
AnimalFactory <|-- LandAnimalFactory : getAnimalFactory() >

SeaAnimalFactory ... SeaAnimalFarmily : getName() >
LandAnimalFactory ... LandAnimalFarmily : getName() >

LandAnimalFarmily .... Cat: getAnimal() >
LandAnimalFarmily .... Dog: getAnimal() >
LandAnimalFarmily .... Lion: getAnimal() >
SeaAnimalFarmily .... Shark : getAnimal() >
SeaAnimalFarmily .... Octpous : getAnimal() >



class AbstractFactoryDemo{
        + public static void main(String[] args)
    }

abstract class AnimalFactory {
    + abstract getAnimal() : Animal
    + {static} getAnimalFactory() : AnimalFactory
}

interface Animal {
    speak() : String
}

class  LandAnimalFactory{
    + getAnimal() : Animal
}
class  SeaAnimalFactory{
    + getAnimal() : Animal
}

class  Cat {
    + speak() : String
}

class  Dog {
    + speak() : String
}

class  Lion {
    + speak() : String
}

class Shark {
    + speak() : String
}
class Octpous {
    + speak() : String
}

Dog --|> Animal
Lion --|> Animal
Cat --|> Animal
Shark --|> Animal
Octpous --|> Animal
@enduml
public static void main(String[] args) {
    Animal animal = null;
    AnimalFactory animalFactory = null;
    String speakSound = null;

    // Get Factory object by passing the factory type
    animalFactory = AnimalFactory.getAnimalFactory("sea");

    System.out.println("Animal Factory type : " + animalFactory.getClass().getName());

    System.out.println();

    // Get Animal object by passing the animal type
    animal = animalFactory.getAnimal("shark");
    System.out.println("Animal Type : "+animal.getClass().getName());
    speakSound = animal.speak();
    System.out.println("shark speak : "+speakSound);

    System.out.println();

    animal = animalFactory.getAnimal("octopus");
    System.out.println("Animal Type : "+animal.getClass().getName());
    speakSound = animal.speak();
    System.out.println("octopus speak : "+speakSound);

    System.out.println("---------------------------------------------------------");
    // Get Factory by passing the factory type
    animalFactory = AnimalFactory.getAnimalFactory("land");

    System.out.println("Animal Factory type : " + animalFactory.getClass().getName());
    System.out.println();

    // Get Animal object by passing the animal type
    animal = animalFactory.getAnimal("dog");
    System.out.println("Animal Type : "+animal.getClass().getName());
    speakSound = animal.speak();
    System.out.println("dog speak : "+speakSound);

    System.out.println();

    animal = animalFactory.getAnimal("cat");
    System.out.println("Animal Type : "+animal.getClass().getName());
    speakSound = animal.speak();
    System.out.println("cat speak : "+speakSound);

    System.out.println();

    animal = animalFactory.getAnimal("lion");
    System.out.println("Animal Type : "+animal.getClass().getName());
    speakSound = animal.speak();
    System.out.println("lion speak : "+speakSound);
  }