关闭

Creational Patterns Part 1/5: Factory Pattern

标签: 工厂模式创造型模式设计模式
275人阅读 评论(0) 收藏 举报
分类:

Creational Patterns Part 1/5: Factory Pattern

目录


Definition

Factory Pattern是Java中最常用的设计模式之一。这个模式属于Creational Patterns的原因就是它会Create一个对象。

何时使用?当希望使用统一的接口创建不同的实现类对象并且对用户隐藏对象的创建逻辑时。

使用频率:Frequency of use High


UML Class Diagram

Factory Pattern


Implementation

Shape接口,含有draw()方法。
创建Shape接口的实现类(Circle, Square和Rectangle)就可以交给ShapeFactory来实现。


// Shape.java
package designpatterns.creationalpatterns.factory;

public interface Shape {
    void draw();
}

// FactoryDemo.java
package designpatterns.creationalpatterns.factory;

public class FactoryDemo {
    public static void main(String[] args) {
        ShapeFactory factory = new ShapeFactory();

        Shape shape = factory.getShape("circle");
        shape.draw();

        shape = factory.getShape("square");
        shape.draw();

        shape = factory.getShape("rectangle");
        shape.draw();
    }
}

class ShapeFactory {

    Shape getShape(String shapeType) {
        if (shapeType == null)  return null;

        if (shapeType.equalsIgnoreCase("CIRCLE")) {
            return new Circle();
        } else if (shapeType.equalsIgnoreCase("SQUARE")) {
            return new Square();
        } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        }
        return null;
    }
}

class Circle implements Shape {

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

class Square implements Shape {

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

class Rectangle implements Shape {

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

// output
Circle::draw
Square::draw
Rectangle::draw
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21004次
    • 积分:968
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:0篇
    • 译文:1篇
    • 评论:0条