为什么需要工厂模式
1.使客户端解耦,当客户端使用new关键字创建类时,会时客户端耦合度较高。
2.在简单工厂中,工厂类过于庞大,包含了大量if else
3.在简单工厂中,如要增加产品,必须修改静态的工厂方法,导致系统扩展不灵活,违反了
开闭原则。
什么是工厂方法模式
工厂方法模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法
模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式。
工厂模式类图
代码示例
工厂方法接口:
public interface Factory {
public Logger CreateLogger();
}
public class DBLoggerFactory implements Factory {
@Override
public Logger CreateLogger() {
//做一些初始化工作,如数据库连接等
Logger logger=new DBLogger();
return logger;
}
}
public class FileLoggerFactory implements Factory{
@Override
public Logger CreateLogger() {
Logger logger=new FileLogger();
return logger;
}
}
产品接口:
public interface Logger {
public void writeLogger();
}
public class DBLogger implements Logger{
@Override
public void writeLogger() {
System.out.println("这是数据库日志");
}
}
public class FileLogger implements Logger{
@Override
public void writeLogger() {
System.out.println("这是文件日志");
}
}