工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式一般有两种类型:
- 列表内容
- 工厂方法模式
- 及抽象工厂模式(是工厂方法模式的扩展)
一般在什么情况下使用工厂方法模式呢?
- 1,有多个类似(功能相似)的对象实例需要创建(new)。
- 2,写代码过程中不能事先知道需要创建哪种类型,多少数量等情况下实例对象。
- 3,扩展性的考虑,当增加实体对对象类型时,我们要方便快速地实现对象创建。
工厂方法模式代码演示
/**
* 生产车子的接口(要实现的功能就是制造车子)
* @description:
*/
public interface MakeCarInterface {
void produce();//实现了生产方法
}
/**
*功能是生产车子底盘
* @description:
*/
public class CarBottom implements MakeCarInterface {
@Override
public void produce() {
System.out.println("******我生产车底盘************");
}
}
/**
*功能是生产车子顶部
* @description:
*/
public class CarHead implements MakeCarInterface {
@Override
public void produce() {
System.out.println("******我生产车头************");
}
}
测试类:
public class Test {
public static void main(String[] args) {
//如果没有工厂方法,我们要获取对象就需要一个一个地new出来
MakeCarInterface car1=new CarHead();
car1.produce();
System.out.println(“———–”);
//有了生产对象实例的工厂类,我们就可以直接使用工厂类的相应方法
MakeCarInterface car2=new CarBottom();
car2.produce();
CarFactory factory=new CarFactory();
System.out.println(“————-“);
MakeCarInterface car3=factory.getHair(“head”);
car3.produce();
CarBottom car4=(CarBottom) factory.getHairByClassName(“factory.CarBottom”);
car4.produce();
}
}
工厂方法模式完全实现‘开-闭 原则,实现了可扩展。复杂的层次结构,我们可以应用于产品结果复杂的场合。