import factoryPattern.factoryMethod.service.Shape;
/*
* 創建接口,同種產品的不同系列分別實現該工廠接口(比如三角形、矩形、橢圓均同 爲形狀產品)。
* 消費產品系列時只需調用該系列的工廠方法生產產品就可以了,這樣避免了簡單工廠方法的缺點:
* 一旦該工廠方法出現故障,其他產品受到影響
*/
public interface ShapeFactory {
public Shape getShape();
}
public class CircleFactory implements ShapeFactory{
@Override
public Shape getShape() {
return new Circle();
}
}
public class RectangleFactory implements ShapeFactory{
@Override
public Shape getShape() {
return new Rectangle();
}
}
public class SquareFactory implements ShapeFactory{
@Override
public Shape getShape() {
return new Square();
}
}
public interface Shape {
String draw();
}
public class Circle implements Shape{
@Override
public String draw() {
return "Circle draw";
}
}
public class Rectangle implements Shape {
@Override
public String draw() {
return "Rectangle draw";
}
}
public class Square implements Shape{
@Override
public String draw() {
return "Square draw";
}
}
public class ShapeFactoryTest {
@Test
public void testShapeFactory(){
ShapeFactory circleFactory=new CircleFactory();
ShapeFactory squareFactory=new SquareFactory();
Shape circle=circleFactory.getShape();
Shape square=squareFactory.getShape();
assertEquals("Circle draw",circle.draw());
assertEquals("Square draw",square.draw());
}
}