工厂模式(FactoryMethod)
一、相关概念
FactoryMethod模式是设计模式应用最为广泛的模式,在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。FactoryMethod解决的就是这个问题,它通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
二、工厂方法举例
在真正的开发工作中,都是合作开发,每个开发人员写部分代码,大家集合在一起就是一个项目。
- 定义宝马车的产品接口
//BWM.java
/*
宝马车的产品接口
*/
public interface BWM{
//产品的信息介绍
//车的发动方式
void showInfo();
/*
构建具体的车的类
*/
class BWM3 implements BWM{
@Override
public void showInfo(){
System.out.println("这个是宝马3系车");
}
}
class BWM5 implements BWM{
@Override
public void showInfo(){
System.out.println("这个是宝马5系车");
}
}
class BWM7 implements BWM{
@Override
public void showInfo(){
System.out.println("这个是宝马7系车");
}
}
}
- 建一个工厂接口
//BWMFactory.java
/*
汽车生产工厂接口
*/
public interface BWMFactory{
BWM productBWM();
}
/*
实现具体的车型的生产工厂
*/
class BWM3Factory implements BWMFactory{
@Override
public BWM productBWM(){
System.out.println("生产宝马3系车");
return new BWM3;
}
}
class BWM5Factory implements BWMFactory{
@Override
public BWM productBWM(){
System.out.println("生产宝马5系车");
return new BWM5;
}
}
class BWM7Factory implements BWMFactory{
@Override
public BWM productBWM(){
System.out.println("生产宝马7系车");
return new BWM7;
}
- 建一个测试类
//Test2,java
public class Test2{
public static void main(String[] args){
BWM b3 = new BWM3Factory().productBWM();
b3.showInfo();
BWM b5 = new BWM5Factory().productBWM();
b5.showInfo();
BWM b7 = new BWM7Factory().productBWM();
b7.showInfo();
}
}
输出:
- 通过工厂把new对象给隔离,通过产品的接口可以实现不同实际产品的实现类,实例的类名的改变不影响其他合作开发人员的编程。