工厂方法模式是设计模式中应用最广泛的模式。在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
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对象给隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其它合作开发人员的编程。