设计模式系列-工厂模式

开发 前端
工厂模式属于创建型设计模式,是日常使用比较多的一种设计模式。比如Logback,Spring等框架中都大量使用该设计模式。

 

工厂模式属于创建型设计模式。是日常使用比较多的一种设计模式。比如Logback,Spring等框架中都大量使用该设计模式。

上篇文章提到的简单工厂模式虽然在简单系统可以用一用,但是因为工厂类本身包含太多业务逻辑,而且如果想增加新的图表类型,需要修改工厂类等缺点。所以我们的生产系统更多地使用工厂模式。

工厂模式为每一个类都定义一个单独的工厂类,该工厂类只负责创建单一的产品。

举个例子

通过工厂模式实现日志的创建,为不同种类的Logger分别创建不同类型的工厂。

来看一下UML图:

来看一下代码如何实现。

先来定义一个Logger接口,以及LoggerFactory接口。

  1. public interface Logger { 
  2.     void writeLogger(); 
  1. public interface LoggerFactory{ 
  2.     Logger createLogger(); 

分别定义FileLogger和FileLoggerFactory。

  1. public class FileLogger implements Logger { 
  2.     @Override 
  3.     public void writeLogger() { 
  4.         System.out.println("File logger"); 
  5.     } 

如果想增加新的Logger直接实现Logger和LoggerFactory就好了,看一下客户端如何使用。

  1. public class FileLoggerFactory implements LoggerFactory { 
  2.     @Override 
  3.     public Logger createLogger() { 
  4.         //不同Logger的个性初始化工作 
  5.         Logger logger =  new FileLogger(); 
  6.         return logger; 
  7.     } 

总结

工厂模式是创建型模式之一,日常使用比较多,每类产品都有对应的一个工厂类。工厂模式把简单工厂的内部逻辑迁移到了客户端,当需要对功能扩展时,只需要修改客户端就OK了。

 

责任编辑:武晓燕 来源: 今日头条
相关推荐

2021-09-29 13:53:17

抽象工厂模式

2020-10-19 09:28:00

抽象工厂模式

2013-11-26 16:29:22

Android设计模式

2021-03-06 22:50:58

设计模式抽象

2020-08-21 07:23:50

工厂模式设计

2011-11-17 16:03:05

Java工厂模式Clojure

2010-04-19 09:30:00

工厂模式PHP设计模式

2020-10-23 09:40:26

设计模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

状态模式

2009-01-15 10:55:29

JavaScript设计模式抽象工厂

2010-10-09 09:25:35

Python工厂模式

2022-05-09 08:04:50

工厂模式设计模式

2021-03-02 08:50:31

设计单例模式

2022-01-14 09:22:22

设计模式桥接

2020-10-21 14:29:15

原型模式

2021-06-09 08:53:34

设计模式策略模式工厂模式

2013-11-26 15:48:53

Android设计模式SDK

2021-10-28 19:09:09

模式原型Java

2021-10-26 00:21:19

设计模式建造者
点赞
收藏

51CTO技术栈公众号