工厂方法模式
工厂方法模式介绍
工厂方法模式类图UML
工厂方法模式角色说明
代码实现
工厂模式再探究
优缺点
应用场景
**定义:**工厂方法模式是对简单工厂模式进一步的抽象化,好处是可以使系统不修改原来代码的情况下引进新的产品,即满足开闭原则。定义一个用于创建对象接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类中。
**抽象工厂(AbstractFactory):**提供了创建产品的接口,调用方通过它访问具体工厂的工厂方法来创建产品
**具体工厂(ConcreteFactory):**实现了抽象工厂定义的方法,完成具体产品的创建
**抽象产品(Product):**定义了产品的规范,描述产品的主要特征和性能
**具体产品(ConcreteProduct):**实现了抽象产品的定义的方法,有具体工厂来创建产品,具体工厂和具体产品一一对应
工厂方法模式实现:
/**
* 抽象工厂:提供具体工厂的共有方法
*/
public interface Product {
public void show();
}
public class ConcreteProduct1 implements Product {
@Override
public void show() {
System.out.println("具体产品1展示...");
}
}
public class ConcreateProduct2 implements Product {
@Override
public void show() {
System.out.println("具体产品2展示...");
}
}
/**
* 抽象工厂
*/
public interface AbstractFactory {
public Product createProduct();
}
/**
* 具体工厂1产生具体产品1
*/
public class ConcreteFactory1 implements AbstractFactory {
@Override
public Product createProduct() {
ConcreteProduct1 concreteProduct1 = new ConcreteProduct1();
System.out.println("具体工厂1创建具体产品1...");
return concreteProduct1;
}
public class ConcreteFactory2 implements AbstractFactory {
@Override
public Product createProduct() {
System.out.println("具体工厂2产生具体产品2...");
return new ConcreateProduct2();
}
}
调用方法:
//获取具体产品1
Product product = new ConcreteFactory1().createProduct();
product.show();
Product product1 = new ConcreteFactory2().createProduct();
product1.show();
使用步骤:
**解决问题:**解决了简单工厂类新增产品需要修改工厂类的方法逻辑问题,即为别开闭原则。
将具体的产品创建退出到工厂类的子类(具体工厂),此时工厂类不再负责所有产品的创建,而是给出具体工厂必须实现的接口,这样工厂方法在添加新的产品的时候,就不需要修改工厂类的逻辑,而是添加了新的工厂子类,符合开闭原则。
优点:
缺点:
客户只关注创建产品的工厂名,不需要知道具体的产品名称
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_45981295/article/details/122483440
内容来源于网络,如有侵权,请联系作者删除!