工厂方法模式是简单工厂模式进一步抽象和推广。在工厂方法模式中,核心的工厂类再也不负责全部的产品的建立,而是将具体建立的工做交给子类去作。这个核心类则摇身一变,成为抽象工厂的角色,仅负责给具体工厂子类必须实现的接口,而不接触哪个产品类应当被实例化这种细节。java
1.工厂方法模式的结构ide
结构与角色code
package com.test; public interface Creator { /** * 工厂方法 * @return */ public Product factory(); }
package com.test; public interface Product { }
package com.test; public class ConcreteCreator1 implements Creator { /** * 工厂方法 */ @Override public Product factory() { return new ConcreteProduct1(); } }
package com.test; public class ConcreteProduct1 implements Product { public ConcreteProduct1() { super(); } }
package com.test; public class ConcreteProduct2 implements Product { public ConcreteProduct2() { super(); // TODO Auto-generated constructor stub } }
package com.test; public class ConcreteCreator2 implements Creator { /** * 工厂方法 */ @Override public Product factory() { return new ConcreteProduct2(); } }
package com.test; public class Client { private static Creator creator1,creator2; private static Product prod1,prod2; public static void main(String[] args) { creator1 = new ConcreteCreator1(); prod1 = creator1.factory(); creator2 = new ConcreteCreator2(); prod2 = creator2.factory(); } }