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的具体实现略