常用设计模式-工厂方法
模式简介
工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:
1. 简单工厂模式(Simple Factory)
2. 工厂方法模式(Factory Method)
3. 抽象工厂模式(Abstract Factory)
工厂方法模式是对简单工厂模式的抽象升级,定义一个用于创建对象的接口,让子类决定实例哪个类。工厂方法使一个类实例化延迟到其子类。
与简单工厂模式相比,简单工厂模式使得工厂的负担过重,而且每次添加新产品,都需要修改工厂,不符合开闭原则。
工厂方法模式的重点就在这个工厂接口了。目标可以无限扩展,工厂类也要随之扩展,一对一存在,满足了开闭原则,但如果目标实现较多,工厂实现类也会增多,不简洁。
实际应用场景
MyBatis中使用的比较多,事务模块和数据源模块都使用了工厂方法模式。
UML类图
案例:汽车生产
Car
/*** @Author l'amour solitaire* @Description 汽车* @Date 2020/11/19 下午1:58**/
public interface Car {/*** 汽车品牌**/String carName();
}
BenzCar
/*** @Author l'amour solitaire* @Description 奔驰* @Date 2020/11/19 下午2:09**/
public class BenzCar implements Car {@Overridepublic String carName() {return "Benz";}
}
BmwCar
/*** @Author l'amour solitaire* @Description 宝马* @Date 2020/11/19 下午2:09**/
public class BmwCar implements Car {@Overridepublic String carName() {return "BMW";}
}
CarFactory
/*** @Author l'amour solitaire* @Description 汽车工厂* @Date 2020/11/19 下午2:02**/
public interface CarFactory {/*****/Car createCar();
}
BeezCarFactory
/*** @Author l'amour solitaire* @Description 奔驰汽车工厂* @Date 2020/11/19 下午2:03**/
public class BeezCarFactory implements CarFactory {@Overridepublic Car createCar() {return new BenzCar();}
}
BmwCarFactory
/*** @Author l'amour solitaire* @Description 宝马汽车工厂* @Date 2020/11/19 下午2:03**/
public class BmwCarFactory implements CarFactory {@Overridepublic Car createCar() {return new BmwCar();}
}
测试
@SpringBootTest
class DesignApplicationTests {@Testvoid test() {CarFactory carFactory = new BeezCarFactory();System.out.println(carFactory.createCar().carName());carFactory = new BmwCarFactory();System.out.println(carFactory.createCar().carName());}}
欢迎关注公众号《JAVA拾贝》回复: 设计模式 即可获取
常用设计模式-工厂方法相关推荐
- Spring常用设计模式--工厂方法模式
本专栏内容参考自:咕泡学院Tom老师的<Spring5核心原理与30个类手写实战>,仅作个人学习记录使用,如有侵权,联系速删. 工厂方法模式指定义一个创建对象的接口,但让实现这个接口的 ...
- 设计模式 工厂方法_使用工厂方法模式设计最佳实践
设计模式 工厂方法 在前面的"设计模式"示例中,我们解释了当今常用的"工厂"模式. 在本节中,我们将了解具有更多抽象的更高级的解决方案. 该模式称为工厂方法设计 ...
- 设计模式 工厂方法_工厂方法设计模式
设计模式 工厂方法 工厂方法模式是流行的创作设计模式之一. 它并不特别依赖于工厂对象来创建对象. 而是要在同一类中使用单独的方法来创建对象. Factory Method模式定义了一个用于创建对象的接 ...
- 设计模式 工厂方法_工厂设计模式–一种有效的方法
设计模式 工厂方法 如您所知,"工厂方法模式"或俗称"工厂设计模式"是"创意设计模式"类别下的一种设计模式. 模式背后的基本原理是,在运行时 ...
- 4. 星际争霸之php设计模式--工厂方法模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- java 工厂方法_java设计模式-工厂方法模式
1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...
- Java常用设计模式————工厂模式
简介: 工厂模式(Factory Pattern)是Java中最常用的设计模式之一,又称多态工厂模式.虚拟构造器模式.属于创建型模式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通 ...
- JAVA设计模式 - 工厂方法模式
工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...
- Java设计模式—工厂方法模式抽象工厂模式
工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式. 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...
最新文章
- 一个简单的程序来使用WiredTiger 存储引擎
- PDF文字怎么编辑,PDF文档编辑方法
- 网页标准HTML5标准较量正酣
- Libra深度解析!
- [转载] NoSQL开篇——为什么要使用NoSQL
- 在Win平台得到磁盘、CPU、用户信息
- [20190805]在小程序中使用npm包
- 谷歌guava_Google Guava MultiMaps
- sqlldr导入数据到数据库
- LeetCode 1473. 给房子涂色 III(DP)
- spark学习-30-spark2.2.0的SparkContext初始化
- 4.19、Bootstrap V4自学之路-----内容---提示冒泡
- 循环冗余检错码CRC
- Apache Hadoop YARN
- 华为端口聚合命令_华为交换机两种端口聚合模式使用实例
- CCS软件的基础使用(以点灯为例)
- 通王CMS采集-TWCMS文章采集-通王CMS关键词采集伪原创发布详解
- 关于计算机组装与维护的论文,计算机组装与维护论文范文
- 【转载】史上最深(sàng)入(xīn)浅(bìng)出(kuáng)的IT术语解读【多测师_何sir】
- Scanner扫描仪的使用方法