设为首页 加入收藏

TOP

简单工厂模式(一)
2017-10-13 10:40:05 】 浏览:4609
Tags:简单 工厂 模式

 

 

 

简单工厂模式定义

简单工厂模式(Simple Factory Pattern),属于创建型模式,由于用于创建实例的方法是静态(static)方法,所以也被称为静态工厂方法(Static Factory Method)。简单工厂模式可以根据参数的不同返回不同类的实例。专门定义一个类来负责创建其他类的实例,而被创建的实例基本都有共同的父类。

简单工厂模式适用环境

1.创建产品的工厂类负责创建的对象比较少,因此不会造成工厂方法中的业务逻辑太复杂

2.客户端只知道传入工厂的类的参数,对于方法内如何创建对象不关心

UML类图解释

Product:产品接口

ProductA:具体产品A

ProductB:具体产品B

ProductC:具体产品C

ProductFactory:创建产品工厂

样例代码

package com.sedion.mynawang.Chapter01_SimpleFactoryPattern;

/**
 * 产品接口
 * @auther mynawang
 * @create 2016-12-28 16:58
 */
public interface Product {
}

  

package com.sedion.mynawang.Chapter01_SimpleFactoryPattern;

/**
 * 产品A
 * @auther mynawang
 * @create 2016-12-28 16:59
 */
public class ProductA implements Product{
}

  

package com.sedion.mynawang.Chapter01_SimpleFactoryPattern;

/**
 * 产品B
 * @auther mynawang
 * @create 2016-12-28 16:59
 */
public class ProductB implements Product{
}

  

package com.sedion.mynawang.Chapter01_SimpleFactoryPattern;

/**
 * 产品C
 * @auther mynawang
 * @create 2016-12-28 16:59
 */
public class ProductC implements Product{
}

  

package com.sedion.mynawang.Chapter01_SimpleFactoryPattern;


import java.util.logging.Logger;

/**
 * 工厂类,用来生产产品(简单工厂类||静态工厂类)
 * @auther mynawang
 * @create 2016-12-28 17:04
 */
public class ProductFactory {

    private static Logger logger = Logger.getLogger("ProductFactory_log");

    public static Product creatProduct(String productType) {
        Product product = null;
        if ("proA".equals(productType)) {
            product = new ProductA();
            logger.info("简单工厂==》创建了ProductA");
        } else if ("proB".equals(productType)) {
            product = new ProductB();
            logger.info("简单工厂==》创建了ProductB");
        } else if ("proC".equals(productType)) {
            product = new ProductC();
            logger.info("简单工厂==》创建了ProductC");
        } else {
            logger.info("简单工厂==》没有这样的产品");
        }
        return product;
    }

}

  

package com.sedion.mynawang;

import com.sedion.mynawang.Chapter01_SimpleFactoryPattern.ProductFactory;

/**
 * 简单工厂模式测试
 * @auther mynawang
 * @create 2016-12-28 17:03
 */
public class Chapter01_SimpleFactoryPattern_test {

    public static void main(String[] args) {
        ProductFactory.creatProduct("proA");
        ProductFactory.creatProduct("proB");
        ProductFactory.creatProduct("proC");
        ProductFactory.creatProduct("proD");
    }

}

  

 

// 打印结果
Connected to the target VM, address: '127.0.0.1:52152', transport: 'socket'
十二月 28, 2016 5:27:11 下午 com.sedion.mynawang.Chapter01_SimpleFactoryPattern.ProductFactory creatProduct
信息: 简单工厂==》创建了ProductA
十二月 28, 2016 5:27:12 下午 com.sedion.mynawang.Chapter01_SimpleFactoryPattern.ProductFactory creatProduct
信息: 简单工厂==》创建了ProductB
十二月 28, 2016 5:27:12 下午 com.sedion.mynawang.Chapter01_SimpleFactoryPattern.ProductFactory creatProduct
信息: 简单工厂==》创建了ProductC
Disconnected from the target VM, address: '127.0.0.1:52152', transport: 'socket'
十二月 28, 2016 5:27:12 下午 com.sedion.mynawang.Chapter01_SimpleFactoryPattern.ProductFactory creatProduct
信息: 简单工厂==》没有这样的产品

Process finished with exit code 0

  

 简单工厂模式优点

1.通过引入配置文件,可以在不修改客户端代码的情况下更换和新加具体的产品类,一

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ObserverPattern(观察者模式) 下一篇ResponsibleChain(责任链模式)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目