Java设计模式–创建型设计模式-简单工厂模式
从这一专栏开始将学习设计模式,上课学习和自己总结归纳的笔记将总结出来供大家参考。
参考书籍:《设计模式就该这样学》
其他文章:
文章目录
一、创建型设计模式
创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对客户端代码需要调用对象的时候隐藏了类的实例化的创建细节。
其中包括:简单工厂模式(不在GoF23种设计模式中)、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。
二、简单工厂模式
1.简单工厂模式定义
简单工厂模式:又叫做静态工厂方法模式(创建实例的方法通常是静态的),简单来说,简单工厂模式用一个具体的工厂类,可以生产多个不同的产品,属于创建型模式,但是不在GoF23种设计模式之内。
2.简单工厂模式角色
简单工厂:是简单工厂的核心,负责实现创建所有实例的内部逻辑。
抽象产品:是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。
具体产品:是简单工厂模式的创建目标
3.简单工厂模式的特点
优点:结构简单,调用方便,对于外界给定的信息可以很方便地创建出响应的产品。
缺点:工厂类单一,负责所有产品的创建,当产品基数增多的时候,工厂类的代码非常臃肿,违背了开闭原则。
4.简单工厂模式的类图
5.简单工厂模式的代码实现
public class Client {
public static void main(String[] args) {
Iproduct iproduct = SimpleFactory.makeProduct(1);
iproduct.doSomething();
}
/**
* 抽象产品
*/
public interface Iproduct{
void doSomething();
}
/**
* 具体产品A
*/
static class ProductA implements Iproduct{
@Override
public void doSomething() {
System.out.println("我是产品A");
}
}
/**
* 具体产品B
*/
static class ProductB implements Iproduct{
@Override
public void doSomething() {
System.out.println("我是产品B");
}
}
final class Const{
static final int PRODUCT_A=0;
static final int PRODUCT_B=1;
}
/**
* 简单工厂
*/
static class SimpleFactory{
public static Iproduct makeProduct(int kind){
switch (kind){
case Const.PRODUCT_A:
return new ProductA();
case Const.PRODUCT_B:
return new ProductB();
}
return null;
}
}
}
测试结果及类图