File tree Expand file tree Collapse file tree 18 files changed +112
-42
lines changed
CreationalDesignPattern/FactoryMethodPattern/Java/FactoryMethodDemo
Creational/FactoryMethod/src/io/csie/chris Expand file tree Collapse file tree 18 files changed +112
-42
lines changed Original file line number Diff line number Diff line change 1+ package io .csie .chris ;
2+
3+ import io .csie .chris .animal .Animal ;
4+ import io .csie .chris .factory .*;
5+
16public class Main {
7+
28 public static void main (String args []) {
3- // Created by Dog factory
9+
10+ // Created by io.csie.chris.animal.Dog factory
411 IAnimalFactory animalFactory1 = new DogFactory ();
512 Animal animal1 = animalFactory1 .createAnimal ();
613 System .out .println (animal1 .makeSound ());
714
8- // Created by Cat factory
15+ // Created by io.csie.chris.animal. Cat factory
916 IAnimalFactory animalFactory2 = new CatFactory ();
1017 Animal animal2 = animalFactory2 .createAnimal ();
1118 System .out .println (animal2 .makeSound ());
1219
13- // Created by Fox factory
20+ // Created by io.csie.chris.animal. Fox factory
1421 IAnimalFactory animalFactory3 = new FoxFactory ();
1522 Animal animal3 = animalFactory3 .createAnimal ();
1623 System .out .println (animal3 .makeSound ());
1724
18- // Created by Monster factory
25+ // Created by io.csie.chris.animal. Monster factory
1926 IAnimalFactory animalFactory4 = new MonsterFactory ();
2027 Animal animal4 = animalFactory4 .createAnimal ();
2128 System .out .println (animal4 .makeSound ());
Original file line number Diff line number Diff line change 1+ package io .csie .chris .animal ;
2+
13public abstract class Animal {
4+
25 public abstract String makeSound ();
36}
Original file line number Diff line number Diff line change 1+ package io .csie .chris .animal ;
2+
3+ import io .csie .chris .animal .common .AnimalType ;
4+
5+ public class Cat extends Animal {
6+
7+ @ Override
8+ public String makeSound () {
9+ return AnimalType .Cat .getSound ();
10+ }
11+ }
Original file line number Diff line number Diff line change 1+ package io .csie .chris .animal ;
2+
3+ import io .csie .chris .animal .common .AnimalType ;
4+
5+ public class Dog extends Animal {
6+
7+ @ Override
8+ public String makeSound () {
9+ return AnimalType .Dog .getSound ();
10+ }
11+ }
Original file line number Diff line number Diff line change 1+ package io .csie .chris .animal ;
2+
3+ import io .csie .chris .animal .common .AnimalType ;
4+
5+ public class Fox extends Animal {
6+
7+ @ Override
8+ public String makeSound () {
9+ return AnimalType .Fox .getSound ();
10+ }
11+ }
Original file line number Diff line number Diff line change 1+ package io .csie .chris .animal ;
2+
3+ import io .csie .chris .animal .common .AnimalType ;
4+
5+ public class Monster extends Animal {
6+
7+ @ Override
8+ public String makeSound () {
9+ return AnimalType .Monster .getSound ();
10+ }
11+ }
Original file line number Diff line number Diff line change 1+ package io .csie .chris .animal .common ;
2+
3+ public enum AnimalType {
4+
5+ Cat ("Meow" ),
6+
7+ Dog ("Bark" ),
8+
9+ Fox ("Ssbb" ),
10+
11+ Monster ("Unknown" );
12+
13+ private String sound ;
14+
15+ private AnimalType (String sound ){
16+ this .sound = sound ;
17+ }
18+
19+ public String getSound () {
20+ return this .sound ;
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ package io .csie .chris .factory ;
2+
3+ import io .csie .chris .animal .Animal ;
4+ import io .csie .chris .animal .Cat ;
5+
16/**
27 * Created by chris on 12/3/14.
38 */
49public class CatFactory implements IAnimalFactory {
10+
511 @ Override
612 public Animal createAnimal () {
713 return new Cat ();
Original file line number Diff line number Diff line change 1+ package io .csie .chris .factory ;
2+
3+ import io .csie .chris .animal .Animal ;
4+ import io .csie .chris .animal .Dog ;
5+
16public class DogFactory implements IAnimalFactory {
7+
28 @ Override
39 public Animal createAnimal () {
410 return new Dog ();
Original file line number Diff line number Diff line change 1+ package io .csie .chris .factory ;
2+
3+ import io .csie .chris .animal .Animal ;
4+ import io .csie .chris .animal .Fox ;
5+
16public class FoxFactory implements IAnimalFactory {
7+
28 @ Override
39 public Animal createAnimal () {
410 return new Fox ();
You can’t perform that action at this time.
0 commit comments