# 工厂模式
## 什么是工厂模式
> 工厂模式,顾名思义就是类比工厂,用于生产的意思。在Java中这样的一个工厂它生产的产品是对象。
## 工厂模式的特点
1. 工厂模式用于隐藏创建对象的细节;
2. 工厂模式核心:工厂类(Fcatory);
3. 工厂模式可细分为简单工厂、工厂方法与抽象工厂;
工厂模式主要是通过一个“中间人”来简化对象创建的过程,这个中间人就是工厂类,工厂类可根据使用行为细分为简单工厂、工厂方法和抽象工厂,其目的都是为了隐藏创建类的细节,但设计理念有所不同。
## 工厂模式的实现
**简单工厂模式**
~~~
public interface Product {
public void desc();
}
public class MobilePhone implements Product {
@Override
public void desc() {
System.out.println("生产手机");
}
}
public class Pad implements Product {
@Override
public void desc() {
System.out.println("生产平板");
}
}
public class Computer implements Product {
@Override
public void desc() {
System.out.println("生产电脑");
}
}
public class Factory {
public static Product produce(String pName) {
if("phone".equals(pName)) {
return new MobilePhone();
} else if("computer".equals(pName)) {
return new Computer();
} else if("pad".equals(pName)) {
return new Pad();
} else {
return null;
}
}
}
public class Demo {
public static void main(String[] args) {
Product pdt = Factory.produce("pad");
pdt.desc();
}
}
~~~
**工厂模式**
工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
~~~java
public interface Product {
public void desc();
}
public class MobilePhone implements Product {
@Override
public void desc() {
System.out.println("生产手机");
}
}
public class Pad implements Product {
@Override
public void desc() {
System.out.println("生产平板");
}
}
public class Computer implements Product {
@Override
public void desc() {
System.out.println("生产电脑");
}
}
public class Factory {
//手机生产线
public static Product mobilePhone() {
return new MobilePhone();
}
//电脑生产线
public static Product computer() {
return new Computer();
}
//平板生产线
public static Product pad() {
return new Pad();
}
}
public class Demo {
public static void main(String[] args) {
Product pdt = Factory.computer();
pdt.desc();
}
}
~~~
**抽象工厂模式**
自学完成
- JAVA基础
- JAVA开发准备
- JAVA介绍
- 开发JAVA的准备
- JAVA的运行原理
- JDK配置
- 我的第一个JAVA程序
- 类与对象
- 基础语言要素
- 数据类型
- eclipse的安装与使用
- 变量
- 直接量
- 运算符
- 流程控制
- 数组结构
- 面向对象
- 隐藏与封装
- 深入构造器
- 类的继承
- 多态
- 包装类
- final修饰符
- 抽象类
- 接口
- 内部类
- 设计模式
- 单例模式
- 工厂模式
- 集合框架
- 集合排序
- 常用类学习
- 异常处理
- Java基础测试
- 综合案例一
- JAVA高级
- 泛型
- 多线程
- 线程的创建
- 线程的生命周期
- 线程同步
- 线程通信
- 输入输出流(I/O编程)
- File文件操作
- 字节流与字符流
- 数据库
- 数据库介绍
- 数据库安装
- SQL
- 表的基本操作
- 修改数据语句
- 数据检索操作
- 多表数据操作
- 表结构设计
- 综合应用
