工厂方法,Factory Method,也是将实例的生成交给子类,工厂决定产品类型,每一种产品对应一个工厂类。
1、抽象产品类
public abstract class Product { public abstract void printName(); public abstract void printMaterial(); }
2、具体产品类
public class Wood extends Product { private String name; private String material; public Wood(String name,String material) { this.name = name; this.material = material; } @Override public void printName() { System.out.println("wood name"); System.out.println(name); } @Override public void printMaterial() { System.out.println("wood material"); System.out.println(material); } }
public class Stone extends Product { private String name; private String material; public Stone(String name,String material) { this.name = name; this.material = material; } @Override public void printName() { System.out.println("stone name"); System.out.println(name); } @Override public void printMaterial() { System.out.println("stone material"); System.out.println(material); } }
3、工厂类
public interface IFactory { Product createProduct(String name); }
public class WoodFactory implements IFactory{ @Override public Wood createProduct(String name) { return new Wood(name, "fineWood"); } }
public class StoneFactory implements IFactory{ @Override public Stone createProduct(String name) { return new Stone(name, "stone"); } }
4、测试
public class Test { public static void main(String[] args) { Product wood = new WoodFactory().createProduct("elm"); wood.printName(); Product stone = new StoneFactory().createProduct("granite"); stone.printName(); } }