设计模式 传统的工厂模式
我们先写一个接口
(为什么我要写接口,不写类呢?,因为接口支持多继承,类只能继承一个,如果你的子类要继承其他的类进行操作时,会变得很麻烦,所以写接口很方便)
Shape.java
package 工厂模式;
public interface Shape {
void draw();
}
再写一些实现类
Circle.java
package 工厂模式;
public class Circle implements Shape{
@Override
public void draw() {
System.out.println("Circle");
}
}
Rectangle .java
package 工厂模式;
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println("Rectangle");
}
}
Square .java
package 工厂模式;
public class Square implements Shape{
@Override
public void draw() {
System.out.println("Square");
}
}
再写一个工厂类
ShapeFactory .java
package 工厂模式;
public class ShapeFactory {
public Shape getShape(String shapeType) {
if(shapeType==null) {
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
}else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
}else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
最后进行测试
Test.java
package 工厂模式;
public class Test {
public static void main(String[] args) {
ShapeFactory shapeFactory=new ShapeFactory();
Shape shape1=shapeFactory.getShape("circle");
shape1.draw();
Shape shape2=shapeFactory.getShape("rectangle");
shape2.draw();
Shape shape3=shapeFactory.getShape("square");
shape3.draw();
}
}
总结:
工厂模式对于设计很好用
传统的工厂模式,一旦要添加新的类,机会比较麻烦
我也推荐大家看一下用反射改进后的工厂模式
反射改进后的工厂模式