设计模式(二):工厂模式
- [1. 工厂模式的介绍](#1. 工厂模式的介绍)
- [2. 工厂模式的类图](#2. 工厂模式的类图)
- [3. 工厂模式的实现](#3. 工厂模式的实现)
-
- [3.1 第一步:创建一个抽象产品](#3.1 第一步:创建一个抽象产品)
- [3.2 第二步:创建具体产品](#3.2 第二步:创建具体产品)
- [3.3 第三步:创建工厂](#3.3 第三步:创建工厂)
- [3.4 第四步:使用工厂,传递类型信息获取对象](#3.4 第四步:使用工厂,传递类型信息获取对象)
1. 工厂模式的介绍
工厂模式
(Factory Pattern)属于创建型模式
,它提供了一种创建对象的最佳方式。它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。
工厂模式
中包含三种角色:
- 抽象产品(Abstract Product):定义了产品的共同接口或抽象类,规定了产品对象的共同方法。
- 具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。
- 工厂( Factory):负责实际创建具体产品的对象。
2. 工厂模式的类图
3. 工厂模式的实现
3.1 第一步:创建一个抽象产品
java
package blog;
/**
* 服饰
*/
public interface Cloth {
void dress();
}
3.2 第二步:创建具体产品
java
package blog;
/**
* 男装
*/
public class ManCloth implements Cloth {
@Override
public void dress() {
System.out.println("男装");
}
}
java
package blog;
/**
* 女装
*/
public class WomanCloth implements Cloth {
@Override
public void dress() {
System.out.println("女装");
}
}
3.3 第三步:创建工厂
java
package blog;
/**
* 工厂
*/
public class ClothFactory {
public static Cloth create(String type) {
try {
Class<?> aClass = Class.forName(type);
return (Cloth) aClass.getDeclaredConstructor().newInstance();
} catch (Exception e) {
return null;
}
}
}
3.4 第四步:使用工厂,传递类型信息获取对象
java
package blog;
/**
* 使用工厂
*/
public class ClothFactoryDemo {
public static void main(String[] args) {
// 创建男装
Cloth manCloth = ClothFactory.create("blog.ManCloth");
manCloth.dress();
// 创建女装
Cloth womanCloth = ClothFactory.create("blog.WomanCloth");
womanCloth.dress();
}
}