简单工厂模式,工厂方法模式,抽象工厂模式

22 篇文章 0 订阅
22 篇文章 0 订阅

不用关注创建对象的过程,就能获得实例;减少new操作。

简单工厂模式

public interface Shape {
    void draw();
}

public class Triangle implements  Shape {

    @Override
    public void draw() {
        System.out.println("draw Triangle");
    }
}

public class Circle implements Shape {

    @Override
    public void draw() {
        System.out.println("draw circle");
    }
}

public class ShapeFactory {
    public static String CIRCLE = "circle";
    public static String TRIANGLE = "triangle";

    public static Shape createShape(String name) {
        Shape shape = null;
        Optional<String> nameOption = Optional.ofNullable(name);
        if (nameOption.isPresent()) {
            switch (nameOption.get()) {
                case "circle":
                    shape = new Circle();
                    break;
                case "triangle":
                    shape = new Triangle();
                    break;
                default:
                    break;
            }
        }
        return shape;
    }
}

@SpringBootTest
public class PatternTest {

    @Test
    public void createShapeTest() {
        Shape circle = ShapeFactory.createShape(ShapeFactory.CIRCLE);
        circle.draw();
        Shape triangle = ShapeFactory.createShape(ShapeFactory.TRIANGLE);
        triangle.draw();
    }
}

工厂方法模式

 

public interface ShapeFactory {
    Shape createShape();
}

public class CircleFactory implements ShapeFactory{
    @Override
    public Shape createShape() {
        return new Circle();
    }
}

public class TriangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
}

@Test
public void factoryTest() {
    ShapeFactory circleFactory = new CircleFactory();
    Shape circle = circleFactory.createShape();
    circle.draw();
    ShapeFactory triangleFactory = new TriangleFactory();
    Shape triangle = triangleFactory.createShape();
    triangle.draw();
}

抽象工厂模式

public interface Color {
    void paint();
}

public class Red implements Color {
    @Override
    public void paint() {
        System.out.println("paint red");
    }
}

public class White implements Color {
    @Override
    public void paint() {
        System.out.println("paint white");
    }
}

public interface ShapeColorFactory {
    Shape createShape();
    Color createColor();
}

public class RedCircleFactory implements ShapeColorFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }

    @Override
    public Color createColor() {
        return new Red();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值