分析实例
这是一个祖玛的简单实例,工厂负责创建产品。有一个抽象工厂,被具体的工厂继承。抽象工厂中写了小球的抽象创建方法:
public abstract class MagicPipeFactory {
public abstract Ball MakeBallFactoryMethod();
}
产品也有抽象的产品:小球
public abstract class Ball {
//打印信息
public abstract void prtInfo();
}
有两种小球:皮球和钢球
public class RubberBall extends Ball{
public RubberBall() {
System.out.println("创建了皮球");
}
public void prtInfo(){
System.out.println("我是皮球");
}
}
public class SteelBall extends Ball{
public SteelBall() {
System.out.println("创建了钢球");
}
public void prtInfo(){
System.out.println("我是钢球");
}
}
两个具体的工厂创建它:
public class MagicPipeForRubberBall extends MagicPipeFactory {
public Ball MakeBallFactoryMethod(){
// 工厂创建产品对象
return new RubberBall();
}
}
public class MagicPipeForSteelBall extends MagicPipeFactory {
public Ball MakeBallFactoryMethod(){
// 工厂创建产品对象
return new SteelBall();
}
}
注意:
工厂是创建小球产品对象的
小球有构造方法,创建对象的时候会调用
用父类创建子类对象,迁移方便
main函数:
public class Application {
public static void main(String[] args) {
System.out.println("工厂方法");
// 父类创建了子类的对象
MagicPipeFactory factory = new MagicPipeForRubberBall();
// 产品 工厂调用方法创建小球,要给到小球变量
Ball ball = factory.MakeBallFactoryMethod();
// 打印信息
ball.prtInfo();
factory = new MagicPipeForSteelBall();
ball = factory.MakeBallFactoryMethod();
ball.prtInfo();
}
}
结果:
工厂方法
创建了皮球
我是皮球
创建了钢球
我是钢球