1.定义
简单工厂模式作为最后一个设计模式是因为简单工厂模式不在23种设计模式中,但是如果不在23种设计模式中的话,那不是才22种,原因是之前在写设计模式之前,已经写过了单例模式,所以单例模式实际上可以在对应的目录中寻找。
简单工厂模式非常的简单,定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
2.简单工厂模式结构图
Product是产品的抽象,图中只是定义了打印产品名字的方法,Computer和Phone是具体的产品,而Factory作为工厂则是对根据传入的值创建不同的产品的实例。
3.简单工厂模式实现
定义抽象的产品类,并且定义抽象方法打印产品名称,而具体的实现交给子类。
public interface Product {
void printName();
}
Computer和Phone都实现于Product,他俩都是具体的产品。
public class Computer implements Product{
@Override
public void printName() {
System.out.println("电脑产品");
}
}
public class Phone implements Product{
@Override
public void printName() {
System.out.println("手机产品");
}
}
Factory是用于创建具体的产品,创建的规则则是根据传入的参数不同来创建不同的产品。
public class Factory {
private Factory() {
}
public static Product createProduct(String name){
if("Computer".equals(name)){
return new Computer();
} else if("Phone".equals(name)){
return new Phone();
}
return null;
}
}
Test就是调用者,通过传入不同的产品名让工厂创建不同的产品。
public class Test {
public static void main(String[] args) {
Factory.createProduct("Computer").printName();
Factory.createProduct("Phone").printName();
}
}
电脑产品
手机产品
简单工厂模式中的角色
Product(产品),用于定于产品的抽象行为,文中由Product扮演此角色
ConcreteProduct(具体产品),是实现于产品的类,文中由Computer和Phone扮演此角色。
Factory(工厂),根据传入的参数不同来决定创建那个具体的产品,文中由Factory扮演此角色。
简单工厂模式只是解决了调用者不用关心产品具体是怎么创建的,但是一旦需要新增一个产品的时候,创建工厂的判断逻辑都需要进行更改。
代码获取地址:https://gitee.com/bughong/design-pattern