工厂方法模式是设计模式中应用最广泛的模式。在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
Bmw.java
package fac;
public interface Bmw {
//产品的信息介绍
void showInfo();
}
class Bmw3 implements Bmw{
@Override
public void showInfo() {
// TODO Auto-generated method stub
System.out.println("宝马3系");
}
}
class Bmw5 implements Bmw{
@Override
public void showInfo() {
// TODO Auto-generated method stub
System.out.println("宝马5系");
}
}
class Bmw7 implements Bmw{
@Override
public void showInfo() {
// TODO Auto-generated method stub
System.out.println("宝马7系");
}
}
BmwFactory.java
package fac;
//汽车生产工厂接口
public interface BmwFactory {
Bmw productBmw();
}
class Bmw3Factory implements BmwFactory{
@Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马3系");
return new Bmw3();
}
}
class Bmw5Factory implements BmwFactory{
@Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马5系");
return new Bmw5();
}
}
class Bmw7Factory implements BmwFactory{
@Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马7系");
return new Bmw7();
}
}
Main.jav
package fac;
public class Main {
public static void main(String[] args) {
Bmw b3 = new Bmw3Factory().productBmw();
b3.showInfo();
Bmw b5 = new Bmw5Factory().productBmw();
b5.showInfo();
Bmw b7 = new Bmw7Factory().productBmw();
b7.showInfo();
}
}
输出:
生产宝马3系 宝马3系 生产宝马5系 宝马5系 生产宝马7系 宝马7系
说明:通过工厂把new对象给隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其它合作开发人员的编程。