23.设计模式--简单工厂模式(Simple Factory模式)
2023-03-20 15:00:30 时间
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
相关文章
- iOS 设计规范
- 非常好用的VS Code插件
- Python Qt GUI设计:5种事件处理机制(提升篇—3)
- 2021-2022 设计趋势ISUX报告 · 动态篇
- 雁栖学堂——湖存储专题直播第六期回顾
- 直播报名中 | 湖存储第七期数据湖加速器 GooseFS 数据安全篇
- 甄建勇:五分钟搞定计算机体系结构(上)
- Centos8上安装Nginx
- Centos8上安装Redis5.X
- Centos8上安装MongoDB4.X
- Hexo博客升级随笔
- Docker常用命令|备忘单
- PHP为任意页面设访问密码,需要登陆才能访问
- 同源策略(Same-origin policy)是什么?
- 好看的 input 编辑框
- 新版 google 谷歌浏览器跨域问题
- 打印标签时如何解决打印偏移
- requestAnimationFrame 执行机制探索
- 云原生项目可扩展性的利器 WebAssembly 简介
- 这个周末,一场旅游者的盛会等你来参加