Creational Patterns Part 1/5: Factory Pattern

原创 2016年05月30日 16:09:43

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
版权声明:本文为博主原创文章,未经博主允许不得转载。

Creational Patterns Part 5/5: Prototype Pattern

Creational Patterns Part 5/5: Prototype Pattern目录 Creational Patterns Part 55 Prototype Pattern 目录 D...
  • iorichang
  • iorichang
  • 2016年05月31日 01:55
  • 191

设计模式 - 抽象工厂模式(abstract factory pattern) 详解

抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/270916...
  • u012515223
  • u012515223
  • 2014年05月26日 16:52
  • 2163

Creational Patterns Part 3/5: Singleton Pattern

Creational Patterns Part 3/5: Singleton Pattern目录 Creational Patterns Part 35 Singleton Pattern 目录 D...
  • iorichang
  • iorichang
  • 2016年05月30日 22:13
  • 189

Creational Patterns Part 4/5: Builder Pattern

Creational Patterns Part 4/5: Builder Pattern目录 Creational Patterns Part 45 Builder Pattern 目录 Defin...
  • iorichang
  • iorichang
  • 2016年05月30日 23:17
  • 230

Creational Patterns Part 2/5: Abstract Factory Pattern

Creational Patterns Part 2/5: Abstract Factory Pattern 目录 Creational Patterns Part 25 Abstract ...
  • iorichang
  • iorichang
  • 2016年05月30日 20:47
  • 345

Design Pattern----Creational Patterns

设想有这么一个问题,在一个迷宫游戏中
  • ccsu_001
  • ccsu_001
  • 2014年06月20日 17:14
  • 911

Design Pattern - Creational Patterns - Abstract Factory Pattern

2007 Section 2, Chapter 2 Abstract Factory Pattern Concept Since...
  • zlxadhkust
  • zlxadhkust
  • 2016年08月10日 06:49
  • 202

Design Pattern - Creational Patterns - Factory Pattern

Section 1, Chapter 1 Factory Pattern Intr: Factories use a base class type to create a class ...
  • zlxadhkust
  • zlxadhkust
  • 2016年03月26日 12:42
  • 265

.NET设计模式-创建型模式专题总结(Creational Pattern)

创建型模式专题总结(Creational Pattern)概述创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。本文对五种常用创建型模式进行...
  • lovelacy
  • lovelacy
  • 2007年05月23日 10:33
  • 459

Java设计模式之简单工厂模式(Simple Factory)

【Java与模式】简单工厂模式(Simple Factory) 首先说明,Java与模式一系列的文章均是参考阎宏博士的《Java与模式》一书,加上自身的一些体会的探索,产生如下文章。在此,特意标明。 ...
  • Wsky51
  • Wsky51
  • 2017年06月09日 23:00
  • 336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Creational Patterns Part 1/5: Factory Pattern
举报原因:
原因补充:

(最多只允许输入30个字)