什么情况下用工厂模式:
1.有一组类似的对象需要创建。
2.在编码时不需要创建哪种类的实例。
3.系统需要考虑扩展性,高内聚,低耦合。
主要用了反射
public interface IHair { void draw(); }
public class LeftHair implements IHair { public void draw() { System.out.println("left"); } }
public class RightHair implements IHair { public void draw() { System.out.println("right"); } }
public IHair getHairByClass(String className) throws Exception { IHair iHair=(IHair)Class.forName(className).newInstance(); return iHair; }
public class testMain { public static void main(String[] args) { HairFactory hairFactory=new HairFactory(); try { IHair hairByClass = hairFactory.getHairByClass("Factory.LeftHair"); hairByClass.draw(); } catch (Exception e) { e.printStackTrace(); } } }抽象工厂模式就是在工厂方法模式的外又加了一层。抽象模式可以根据需要选择不同的工厂。