02 简单工厂模式

简单工厂模式:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是工厂方法模式和抽象工厂模式的基础和初步实现。

                  简单工厂模式的UML类图:

从图中我们可以看到,简单工厂模式有三种角色。

1、简单工厂(SimpleProductFactory)

简单工厂角色负责创建所有实例

2、抽象产品(Product)

  描述所有实例的所共有的公共接口

3、具体产品(ConcreteProduct)

  具体产品是简单工厂模式的创建目标,所有创建的对象充当这个角色的某个具体类的实例

上面总共有三种类,一个是工厂类SimpleProductFactory,一个是产品接口Product,一个便是具体的产品,例如产品A和产品B,这之中,工厂类负责整个创建产品的逻辑判断,所以为了使工厂类能够知道我们需要哪一种产品,我们需要在创建产品时传递给工厂类一个参数,去表明我们想要创建哪种产品。

public class ProductClient {
    public static void main(String[] args) {
        Product product1 = ProductFactory.createProduct("A");
        Product product2 = ProductFactory.createProduct("B");
        product1.product();
        product2.product();
    }
}

class ProductA implements Product {

    @Override
    public void product() {
        System.out.println("生产产品A");
    }

}

class ProductB implements Product {

    @Override
    public void product() {
        System.out.println("生产产品B");
    }

}

interface Product {
    public void product();
}

class ProductFactory {
    private ProductFactory() {
    }

    public static Product createProduct(String productName) {
        if (productName == null) {
            return null;
        }
        if (productName.equals("A")) {
            return new ProductA();
        } else if (productName.equals("B")) {
            return new ProductB();
        } else {
            return null;
        }
    }
}
时间: 2024-08-01 19:32:06

02 简单工厂模式的相关文章

网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档

小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心:通过该项目,我们对业务流程有一个整体把控.对继承和多态有深入的了解 下面是类图: 主界面图: 核心思路: 1   1.首先在频道管理类ChannelManager中写一个加载所有频道方法LoadAllChannel; 2   3        该方法作用读取FullChannels.xml文件,并且

简单工厂模式(设计模式02)

作者:jiankunking 出处:http://blog.csdn.net/jiankunking 1.定义 简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),但不属于23种GOF设计模式之一,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 2.基本简介 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个

js之简单工厂模式

简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮. e.g. var BicycleShop = function(){}; BicycleShop.prototype = { sellBicycle : function( model ){ var bicycle; switch( model ){ case

设计模式(四):SIMPLE FACTORY简单工厂模式 -- 创建型模式

1.定义 简单工厂模式又称静态工厂方法模式.重命名上就可以看出这个模式一定很简单.它存在的目的很简单:定义一个用于创建对象的接口. 2.适用场景 如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用.后来出现工业革命.用户不用去创建宝马车.因为客户有一个工厂来帮他创建宝马.想要什么车,这个工厂就可以建.比如想要320i系列车.工厂就创建这个系列的车.即工厂可以创建产品. 3.评价 优点: 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体

简单工厂模式

目前正在看<大话设计模式>,写此系列的文章记录下学习的经过. 简单工厂模式 先看如下代码,使用面向对象的原理实现计算器功能 Operation运算类 1 public class Operation 2 { 3 private double numberA = 0; 4 private double numberB = 0; 5 6 public double NumberA 7 { 8 get { return numberA; } 9 set { numberA = value; } 10

大话设计模式:简单工厂模式

由于面向过程编程造成的代码膨胀问题越来越严重,使其维护的代价高,灵活性很低.为了使代码易维护.易扩展.易复用和灵活性好,所以我们在采用面向对象编程的时候,防止采用面向对象的语言实际上却做着面向过程的事儿,更需要采用某种设计模式,核心就是使程序变得高内聚,低耦合,这样的程序才能达到上面的四个优点.而简单工厂模式的出现也正是为了达到这样一种效果,将工厂和产品分块,具体解决了实例化那个对象(具体产品)的需求.从而实现了高内聚,低耦合.使程序易维护.易扩展.易复用和灵活性好.同时也用到了面向对象编程的三

Python 设计模式--简单工厂模式

简单工厂模式(Factory Pattern)是一种创建型的设计模式,像工厂一样根据要求生产对象实例. 特点:根据不同的条件,工厂实例化出合适的对象. <大话设计模式>中实例:四则运算计算器 代码: 1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 4 class Operation: 5 def getResult(self): 6 pass 7 8 class OperationAdd(Operation): 9 def getResul

简单工厂模式( Simple Factory Pattern )

1. 简单工厂模式( Simple Factory Pattern ) 1.1. 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮.矩形按钮.菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式. 1.2

设计模式的C++实现 24.简单工厂模式

简单工厂模式,又称静态工厂模式,属于创造型模式,但又不是23中GOF设计模式之一.简单工厂是由一个工厂对象决定创造出哪种产品类的实例.简单工厂模式是工厂模式中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂通过传入的参数判断创建哪一个产品的实例,封装了对象的创建,客服端看到的只是产品的抽象对象,不关心返回子类的类型. 简单来说,简单工厂就是调用是传入一个参数来告诉工厂类要创建一个什么样的对象,然后工厂类返回这个对象. 缺点是 没添加一个产品子类,都要在工厂类中添加一个判断分支