工厂方法模式是什么?
我的理解:首先,简单工厂模式不是一种常用的模式,扩展性差,基本不使用。工厂方法模式和抽象工厂模式是常用的工厂模式。
工厂方法:实际上就是工厂类的向上转型?类似List<Integer> list = new ArrayList<>();,下面的代码中的 ShapeFactory circleFactory = new CircleFactory();这里的工厂就根据后面的值得到了一个circle的工厂。然后调用工厂中的createShape()创建出对应的实例。
工厂方法模式:
下面的代码以创建不同图形为例
// 抽象类Shape,表示所有类型
public abstract class Shape {
abstract void draw();
}
// 子类型circle继承Shape表示它是一个图形,并且实现父类的方法
public class Circle extends Shape{
@Override
void draw() {
System.out.println("Circle");
}
}
// 和上面一样,创建一个Square
public class Square extends Shape{
@Override
void draw() {
System.out.println("Square");
}
}
上面创建了两个图形,circle和square,它们都继承自Shape,表示自己是一个图形,并且实现了各自的draw方法(具体业务方法)。
下面是工厂的创建,和上面的代码类似,一个类对应一个相应的工厂,实现createShape方法,返回对应类的实例
//图形总工厂
public abstract class ShapeFactory {
abstract Shape createShape();
}
// 圆形工厂
public class CircleFactory extends ShapeFactory {
@Override
Shape createShape() {
// 返回对应的对象
return new Circle();
}
}
// 方形工厂
public class SquareFactory extends ShapeFactory {
@Override
Shape createShape() {
return new Square();
}
}
下面就是具体调用
public class Main {
public static void main(String[] args) {
// 这里就像是向上转型(多态)
ShapeFactory circleFactory = new CircleFactory();
// 使用createShape获取对应工厂的对象,然后执行对应业务方法draw
circleFactory.createShape().draw();
}
}
1029



被折叠的 条评论
为什么被折叠?



