最新消息

Java简单工厂模式(Simple Factory)

设计模式 金牌剑客 1580℃ 0评论

简单工厂并不是标准的设计模式,但却是经常使用到的一种模式。

简单工厂提供了一个创建对象实例的功能,客户端不需要关心实例的类型。

场景

已日志接口为例,调用者通常需要记录日志,如果在各个调用者直接使用log4j或者jdk的日志接口,那么在上线的时候切换日志实现,或者后期升级日志实现,将要修改所有的调用者,这显然是很麻烦的一件事

解决方案

使用简单工程模式解耦(在日志这方面不推荐使用,因为有成熟的slf4j以及commons-logging解决方案,这里仅仅是作为简单工程的使用场景做实例)

UML类图

simpleFactory

可以看到在客户端不是直接使用了log4j或者jdk日志的接口,而是自定义了一个Logger接口,客户端直接使用Logger接口,并通过LoggerFactory去创建一个日志实现,具体是哪个实现,客户端不需要关心,如果需要更换日志实现,只要修改LoggerFactory即可,从而做到了接口和实现相分离。

java代码

Logger.java

public interface Logger {
	public void info(String msg);
}

Log4jLogger.java

public class Log4jLogger implements Logger {
	public void info(String msg) {

	}
}

JdkLogger.java

public class JdkLogger implements Logger {
	public void info(String msg) {
		
	}
}

LoggerFactory.java

public class LoggerFactory {
	public static Logger getLogger() {
		return new Log4jLogger();
	}
}

Client.java

public class Client {
	public static void main(String[] args) {
		Logger logger = LoggerFactory.getLogger();
		logger.info("client");
	}
}

这只是一个简单工程的实例,如果有兴趣继续深究可以看下slf4j的源代码。

转载请注明:QualInfo » Java简单工厂模式(Simple Factory)

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址