Java设计模式--简单工厂模式【Simple Factory Pattern】
来源:互联网 发布:linux的mkdir命令 编辑:程序博客网 时间:2024/06/07 13:31
最近湖南台的综艺节目《中餐厅》火了,赵薇、黄晓明、张亮等合伙人在泰国开了一家中餐厅,备受中外朋友青睐。
顾客来到餐厅,说我想吃宫保鸡丁,然后合伙人一合计,说张亮比较拿手,然后让张亮去做,做完后端到顾客面前,顾客不会问,你这个宫保鸡丁谁做的呀?换句话说,顾客并不关心我点的菜,你们谁来做,只要你们中餐厅给我把宫保鸡丁做好就可以了。这个中餐厅就是个简单的工厂模式。
我们把《中餐厅》看成一个食物工厂,顾客下了单后,中餐厅根据不同的菜品生产不一样的食物,然后提供给顾客。
那么什么是简单工厂模式呢?简单工厂模式又叫静态工厂方法模式,被看成是工厂方法模式的一个特例,是由一个工厂对象决定创建出哪一种产品类的实例。
现在我们抽象出统一的“烹饪”接口,以湘菜、川菜、东北菜为例,分别实现不同的菜品。
package com.pattern.factory.simple;public interface Food { public void cooking();}
package com.pattern.factory.simple;public class HuNanFood implements Food {public void cooking() {System.out.println("又香又辣的湘菜上来咯...");}}
package com.pattern.factory.simple;public class SiChuanFood implements Food {@Overridepublic void cooking() {System.out.println("美味的四川菜系上来咯...");}}
package com.pattern.factory.simple;public class DongBeiFood implements Food {@Overridepublic void cooking() {System.out.println("东北乱炖一锅上咯...");}}定义一个生产全部菜品的食物工厂,当顾客提交订单时,分别调用不同的角色去创建菜品。
package com.pattern.factory.simple;public class FoodFactory {public static Food food=null; public static Food createFood(Class class1){ try {food=(Food) Class.forName(class1.getName()).newInstance();} catch (InstantiationException e) {System.out.println("您得告诉我您点的什么菜呀!");} catch (IllegalAccessException e) {System.out.println("您点的菜不对呀,确定有这个菜吗?");} catch (ClassNotFoundException e) {System.out.println("您点的菜我们这儿没有!");} return food; } }
以上就是简单工厂模式,可以看出,简单工厂模式主要有以下角色和职责:
工厂角色:这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑,创建所需要的产品对象。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口,负责描述所有实例所共有的公共接口。
具体产品角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
简单工厂模式的优点是工厂类能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的,可以免除直接创建产品对象的责任,有利于整个软件体系结构的优化。缺点是这个工厂类负责所有的创建逻辑,当这个工厂出现问题时,所有的客户端都会受到牵连。且在产品种类日益增多,工厂类需要判断何时创建何种产品,造成业务逻辑混乱。工厂类和产品之间的耦合度太高,依赖性太大,降低了程序的灵活性和可维护性,违背了”开闭原则“(对扩展开放,对修改封闭)。
所以工厂方法模式应运而生,迫在眉睫。
源码下载:http://download.csdn.net/download/pelifymeng2/9994100
- JAVA设计模式之 简单工厂模式【Simple Factory Pattern】
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- Java设计模式:简单工厂模式(Simple Factory Pattern)
- Java设计模式--简单工厂模式【Simple Factory Pattern】
- 设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式1:Simple Factory Pattern(简单工厂模式)
- c++设计模式:简单工厂模式(Simple Factory Pattern)
- C#设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式(1):简单工厂模式(Simple Factory Pattern)
- Simple Factory Pattern 简单工厂模式——《深入浅出设计模式(C#/Java版)》
- 浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
- java设计模式——简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式 Simple Factory Pattern
- 简单工厂模式(simple Factory Pattern)
- 简单工厂模式(simple factory pattern)
- 一、简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(Simple Factory Pattern)
- js打开新窗口并写入内容
- elasticsearch内存分配设置详解
- 2017 Multi-University Training Contest 1 solutions 1011 KazaQ's Socks
- pure abstract class(什么是纯抽象类?)
- jq获取布尔值
- Java设计模式--简单工厂模式【Simple Factory Pattern】
- 什么是页表和页目录
- 大话数据结构 code第七章 01邻接矩阵创建_CreateMGraph
- 9.匿名函数:lambda表达式/filter()/map()
- MyEclipse使用总结 —— MyEclipse10安装SVN插件
- Android启动失败
- Android AIDL进程通信机制详解
- springboot【11】数据访问之NoSQL数据库redis
- Android源代码获得方法