Skip to content

Commit fef3688

Browse files
author
chrish
committed
Refactoring SimpleFactoryPattern.
1 parent e6eed56 commit fef3688

File tree

13 files changed

+110
-46
lines changed

13 files changed

+110
-46
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.csie.chris;
2+
3+
import io.csie.chris.animal.Animal;
4+
import io.csie.chris.animal.common.AnimalType;
5+
import io.csie.chris.factory.AnimalFactory;
6+
7+
public class Main {
8+
9+
public static void main(String args[]) {
10+
11+
Animal animal1 = AnimalFactory.createAnimal(AnimalType.Dog.getName());
12+
System.out.println(animal1.makeSound());
13+
14+
Animal animal2 = AnimalFactory.createAnimal(AnimalType.Cat.getName());
15+
System.out.println(animal2.makeSound());
16+
17+
Animal animal3 = AnimalFactory.createAnimal(AnimalType.Fox.getName());
18+
System.out.println(animal3.makeSound());
19+
20+
Animal animal4 = AnimalFactory.createAnimal(AnimalType.Monster.getName());
21+
System.out.println(animal4.makeSound());
22+
}
23+
}

CreationalDesignPattern/SimpleFactoryPattern/Java/SimpleFactoryDemo/Animal.java renamed to Creational/SimpleFactoryPattern/src/io/csie/chris/animal/Animal.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
package io.csie.chris.animal;
2+
13
public abstract class Animal {
4+
25
public abstract String makeSound();
36
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.csie.chris.animal.common;
2+
3+
public enum AnimalType {
4+
5+
Cat("feline", "Meow"),
6+
7+
Dog("canine", "Bark"),
8+
9+
Fox("vulpine", "Ssbb"),
10+
11+
Monster("xxxxxxx", "Unknown");
12+
13+
private String sound;
14+
15+
private String name;
16+
17+
AnimalType(String name, String sound) {
18+
this.name = name;
19+
this.sound = sound;
20+
}
21+
22+
public String getSound() {
23+
return this.sound;
24+
}
25+
26+
public String getName() {
27+
return this.name;
28+
}
29+
}

CreationalDesignPattern/SimpleFactoryPattern/Java/SimpleFactoryDemo/AnimalFactory.java renamed to Creational/SimpleFactoryPattern/src/io/csie/chris/factory/AnimalFactory.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
1-
import com.sun.istack.internal.Nullable;
1+
package io.csie.chris.factory;
2+
3+
import io.csie.chris.animal.*;
4+
import io.csie.chris.animal.common.AnimalType;
25

36
public class AnimalFactory {
7+
48
// Create the instance by parameter, and it's a static method
59
public static Animal createAnimal(String animalType) {
6-
Animal animal = null;
710

8-
if (animalType.equals("canine")) {
11+
Animal animal;
12+
13+
if (animalType.equals(AnimalType.Dog.getName())) {
914
animal = new Dog();
10-
} else if (animalType.equals("feline")) {
15+
} else if (animalType.equals(AnimalType.Cat.getName())) {
1116
animal = new Cat();
12-
} else if (animalType.equals("vulpine")) {
17+
} else if (animalType.equals(AnimalType.Fox.getName())) {
1318
animal = new Fox();
1419
} else {
1520
animal = new Monster();
1621
}
22+
1723
return animal;
1824
}
1925
}

CreationalDesignPattern/SimpleFactoryPattern/Java/SimpleFactoryDemo/Cat.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

CreationalDesignPattern/SimpleFactoryPattern/Java/SimpleFactoryDemo/Dog.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)