public class AbstractFactoryTest { @Test public void testFillColor(){ AbstractFactory colorFactory=new ColorFactory(); Color red=colorFactory.getColor("Red"); assertEquals("Red fill",red.fill()); } @Test public void testDrawShape(){ AbstractFactory shapeFactory=new ShapeFactory(); Shape circle=shapeFactory.getShape("Circle"); assertEquals("Circle draw",circle.draw()); } } /** * 工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构 */ public abstract class AbstractFactory { public abstract Color getColor(String color); public abstract Shape getShape(String shape); } public interface Color { String fill(); } public interface Shape { String draw(); } public class ColorFactory extends AbstractFactory { @Override public Color getColor(String color) { if(null == color){ return null; } if("Red".equalsIgnoreCase(color)){ return new Red(); }else if("Black".equalsIgnoreCase(color)){ return new Black(); }else if("White".equalsIgnoreCase(color)){ return new White(); } return null; } @Override public Shape getShape(String shape) { return null; } } public class ShapeFactory extends AbstractFactory { @Override public Shape getShape(String shape) { if(null == shape){ return null; } if("Circle".equalsIgnoreCase(shape)){ return new Circle(); }else if("Square".equalsIgnoreCase(shape)){ return new Square(); }else if("Rectangle".equalsIgnoreCase(shape)){ return new Rectangle(); } return null; } @Override public Color getColor(String color) { return null; } }备注:Color Shape的具体实现略