本文共 1918 字,大约阅读时间需要 6 分钟。
工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。
这样核心工厂类不再负责产品的创建,变成一个抽象工厂角色,仅负责具体工厂子类必须要实现的接口。这样进一步抽象的好处是系统在不修改具体工厂角色的情况下引进新的产品。
//日志系统,充当抽象产品角色public interface Logger { public void writeLog();}//文件日志记录器,充当具体产品角色public class FileLogger implements Logger { @Override public void writeLog() { System.out.println("文件日志记录"); } }//数据库日志记录器,充当具体产品角色public class DatabaseLogger implements Logger { @Override public void writeLog() { System.out.println("数据库日志记录"); }}//日志记录器工厂接口,充当抽象工厂角色public interface LoggerFactory { public Logger createLogger();}//文件日志工厂public class FileLoggerFactory implements LoggerFactory { @Override public Logger createLogger() { Logger logger = new FileLogger(); return logger; }}//数据库日志工厂public class DatabaseLoggerFactory implements LoggerFactory { @Override public Logger createLogger() { Logger logger = new DatabaseLogger(); return logger; }}//客户端public class Client { public static void main(String[] args) { LoggerFactory factory1 = new FileLoggerFactory(); Logger logger1 = factory1.createLogger(); logger1.writeLog(); LoggerFactory factory2 = new DatabaseLoggerFactory(); Logger logger2 = factory2.createLogger(); logger2.writeLog(); }}
简单工厂模式又叫静态工厂模式,它用来实例化目标类的静态类。简单工厂是不完全满足OCP。最大的区别:简单工厂模式只有一个工厂类,而工厂方法模式有一组实现了相同接口的工厂类。
上一篇:
下一篇:转载地址:http://elrai.baihongyu.com/