简单工厂模式(simple factory pattern)
2016-02-25 14:00
531 查看
简单工厂模式是由一个工厂对象来决定创建出哪一种产品类的实例(对象)。就是由一个工厂类依据传入的參数来决定须要创建哪一种产品的对象或实例。
此模式主要涉及到工厂角色,抽象产品,详细产品三个角色
工厂类(Creator),此模式的核心,含有与应用紧密相关的商业逻辑,
抽象产品(Product),担任须要创建产品的父类,一般由一个java接口事抽象类来实现
详细产品(Concrete Product)。须要创建的产品的实例
源码例如以下:
1:抽象产品
3:详细产品2
6:測试结果为:
7:说明,本项目是基于maven构建,測试框架是採用 JUnit
此模式主要涉及到工厂角色,抽象产品,详细产品三个角色
工厂类(Creator),此模式的核心,含有与应用紧密相关的商业逻辑,
抽象产品(Product),担任须要创建产品的父类,一般由一个java接口事抽象类来实现
详细产品(Concrete Product)。须要创建的产品的实例
源码例如以下:
1:抽象产品
public interface Fruit { void grow(); void plant(); }2:详细产品1
public class Apple implements Fruit { public Apple() { System.out.println("Apple.Apple"); } @Override public void grow() { System.out.println("Apple.grow"); } @Override public void plant() { System.out.println("Apple.plant"); } }
3:详细产品2
public class FruitGardener { public static Fruit factory(String which) { if (which.equalsIgnoreCase("apple")) { return new Apple(); } else { return new StrawBerry(); } } }4:核心工厂类
public class StrawBerry implements Fruit { public StrawBerry() { System.out.println("StrawBerry.StrawBerry"); } @Override public void grow() { System.out.println("StrawBerry.grow"); } @Override public void plant() { System.out.println("StrawBerry.plant"); } }5:測试类
public class Tests { @Test public void testSimpleFactory() { FruitGardener.factory("APPLE"); FruitGardener.factory("strawberry"); } }
6:測试结果为:
Apple.Apple StrawBerry.StrawBerry Process finished with exit code 0
7:说明,本项目是基于maven构建,測试框架是採用 JUnit
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency>8:后面会加入源码
相关文章推荐
- nginx+iis实现负载均衡
- scrapy 让指定的spider执行指定的pipeline
- bootstrap 响应式工具
- 面向对象程序设计__Task3_Calculator
- github配置密钥
- Raspberry Pi INSTALLING OPERATING SYSTEM IMAGES ON MAC OS
- centos7 adb问题解决办法
- 月薪2W和1W的工作,你会怎么选
- Android MediaRecorder 录音
- 图文详解YUV420数据格式
- HDU1008—Elevator
- 20145120黄玄曦 《java程序设计》 寒假学习总结
- HTML5基础知识习题 一
- 一条汇编指令引发的 蝴蝶效应 (后记)
- 如何激活phpstorm/webstorm?
- 基于spring+thrift集成ehchche,mongodb,redis等缓存服务
- 灵活的理解JavaScript中的this指向
- Unity MeshFilter导出OBJ文件
- openwrt学习计划
- SQL Server 两种方法实现分页