//Main.java
//工厂模式Factory Pattern属于创建型模式的一种
//创建对象时不会暴露创建逻辑,且通过一个共同的接口来指向新创建的对象
interface Shape{
public void draw();
}
class Rectangle implements Shape{
public Rectangle(){
System.out.println("New Rectangle.");
}
public void draw(){
System.out.println("Inside Rectangle.");
}
}
class Square implements Shape{
public Square(){
System.out.println("New Square.");
}
public void draw(){
System.out.println("Inside Square.");
}
}
class Circle implements Shape{
public Circle(){
System.out.println("New Circle.");
}
public void draw(){
System.out.println("Inside Circle.");
}
}
//工厂类,根据用户输入的名字生产对应的对象"产品"
class ShapeFactory{
//这里static可用可不用
public static Shape newShape(String shapeType){
if(shapeType==null){
return null;
}
if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
}
if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
}
return null;
}
}
public class Main{
public static void main(String[] args){
//如果前面不加static,这里得先实例化ShapeFactory
Shape shape1=ShapeFactory.newShape("rectangle");
Shape shape2=ShapeFactory.newShape("square");
Shape shape3=ShapeFactory.newShape("circle");
shape1.draw();
shape2.draw();
shape3.draw();
}
}