设计模式-工厂模式
最近学习到工厂模式,记录下学习过程
参考资料
主要参考了这篇文章https://blog.51cto.com/liukang/1981900
核心思想
工厂模式主要是为了满足开闭原则,开闭原则可以理解为,流水线生产,需要产品就直接获取成品,屏蔽掉创建过程,提高效率。
例子
仍然是做一个画图软件,可以画矩形、三角形和圆形等,每一种图形都用一个类来管理:
- Rectangle
- Circle
- Triangle
每个类都有各自的draw()方法,共同实现Shape接口。
Shape.java
public interface Shape {
void draw();
}
Rectangle.java
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Draw a rectangle.");
}
}
Triangle.java
public class Triangle implements Shape {
@Override
public void draw() {
System.out.println("Draw a triangle.");
}
}
Circle.java
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Draw a circle.");
}
}
以上几个类都没有变化,有变化的是工厂类,工厂类也采用基于接口的设计,由不同的具体工厂类负责相应对象的创建:
ShapeFactory.java
public interface ShapeFactory {
Shape getShape();
}
RectangleFactory.java
public class RectangleFactory implements ShapeFactory {
public Shape getShape() {
return new Rectangle();
}
}
CircleFactory.java
public class CircleFactory implements ShapeFactory{
public Shape getShape() {
return new Circle();
}
}
Triangle.Factory.java
public class CircleFactory implements ShapeFactory{
public Shape getShape() {
return new Circle();
}
}
那么在需要某个形状的时候,就通过相应的具体工厂类创建即可:
Client.java
public class Client {
public static void main(String[] args) {
ShapeFactory factory = new CircleFactory();
Shape c = factory.getShape();
c.draw();
}
}
网友评论