2017-01-08 22:55:49 -08:00
|
|
|
// patterns/ShapeFactory1.java
|
2021-01-31 15:42:31 -07:00
|
|
|
// (c)2021 MindView LLC: see Copyright.txt
|
2017-01-08 22:55:49 -08:00
|
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
|
|
// Visit http://OnJava8.com for more book information.
|
2021-03-04 16:15:04 -07:00
|
|
|
// A basic static factory method.
|
2017-01-08 22:55:49 -08:00
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.*;
|
|
|
|
import patterns.shapes.*;
|
|
|
|
|
2017-01-09 14:26:12 -08:00
|
|
|
public class ShapeFactory1 implements FactoryMethod {
|
2021-01-31 15:42:31 -07:00
|
|
|
@Override public Shape create(String type) {
|
2017-01-08 22:55:49 -08:00
|
|
|
switch(type) {
|
|
|
|
case "Circle": return new Circle();
|
|
|
|
case "Square": return new Square();
|
|
|
|
case "Triangle": return new Triangle();
|
|
|
|
default:
|
|
|
|
throw new BadShapeCreation(type);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public static void main(String[] args) {
|
2017-01-09 14:26:12 -08:00
|
|
|
FactoryTest.test(new ShapeFactory1());
|
2017-01-08 22:55:49 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
/* Output:
|
|
|
|
Circle[0] draw
|
|
|
|
Circle[0] erase
|
|
|
|
Square[1] draw
|
|
|
|
Square[1] erase
|
|
|
|
Triangle[2] draw
|
|
|
|
Triangle[2] erase
|
|
|
|
Square[3] draw
|
|
|
|
Square[3] erase
|
|
|
|
Circle[4] draw
|
|
|
|
Circle[4] erase
|
|
|
|
Circle[5] draw
|
|
|
|
Circle[5] erase
|
|
|
|
Triangle[6] draw
|
|
|
|
Triangle[6] erase
|
|
|
|
*/
|