目录
SimpleFactory 简单工厂模式
目录
[TOC]
1. 概述
1.1. Head First设计模式定义
简单工厂其实并不是一个设计模式,反而比较像一种编程习惯。
1.2. 自我理解
当一个框架或者服务有多个可以给操作者提供选择时,如果我们去 new 实例化这个具体类时,我们这个实用类就已经绑定了具体的类,从而导致我们的代码更加脆弱,缺乏弹性。当然,现在我们几乎所有的项目都会去使用Spring这个超级大工程去维护实例,如果自己开发一个框架,没有使用Spring这个超级大工厂,我们就可以使用简单工厂来辅助我们实例化具体的类。
1.3. 简单工厂的组成
工厂类角色:含有一定的商业逻辑和判断逻辑,用来创建产品。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
具体产品角色:工厂类所创建的对象就是此角色的实例。
2. UML
3. Example
3.1. 场景
随着技术的发展,数据库选择也越来越多,MySQL、Oracle、内存数据库Redis、列式存储库HBASE、索引ElasticSearch等等。当我们还在在项目中直接去 new 实例化某一个库对象时,这对之后项目扩展及维护带来了很多不方便。那么我们可以通过工厂及配置文件决定实例化对应的数据库。
3.2. SimpleFactory设计模式的代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
/** * Created * Date: 2021/06/09 16:42 <br/> * Description: 简单工厂模式 * * @author jomin@loserzhao.com * @see */ public class SimpleFactoryPatternDemo { public static void main(String[] args) { DataBase dataBase = DataBaseFactory.createDatabase(DataBaseConstantEnum.ORACLE); dataBase.list(); } interface DataBase{ void list(); // void insert(); // void delete(); // void update(); } /** * Author: jomin@loserzhao.com <br/> * Date: 16:45 2021-06-09 <br/> * Description: 数据库工厂 */ static class DataBaseFactory{ static DataBase createDatabase(DataBaseConstantEnum databaseName){ if(DataBaseConstantEnum.MYSQL.equals(databaseName)){ return new MySQLDataBase(); }else if(DataBaseConstantEnum.ORACLE.equals(databaseName)){ return new OracleDataBase(); } return null; } } static class MySQLDataBase extends DataBaseFactory implements DataBase{ public void list() { System.out.println("mysql list done!"); } } static class OracleDataBase extends DataBaseFactory implements DataBase{ public void list() { System.out.println("oracle list done!"); } } enum DataBaseConstantEnum { MYSQL("Mysql"), ORACLE("Oracle"); private String databaseName; DataBaseConstantEnum(String databaseName){ this.databaseName = databaseName; } } } |
原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]
本文链接地址: http://www.loserzhao.com/java/designpattern/simple-factory-designpattern.html
文章的脚注信息由WordPress的wp-posturl插件自动生成
0 条评论。