• 设计模式——工厂方法模式


    知识点:工厂方法模式创建对象

    (一)什么是工厂方法模式

    定义一个创建产品对象的工厂接口,子类工厂实现接口来创建具体的产品对象

    (二)角色

    抽象工厂:是工厂方法模式的核心,创建具体对象的的工厂类必须实现这个接口

    具体工厂:实现抽象工厂接口的具体工厂,用来创建具体产品对象

    抽象产品:具体产品对象拥有的共同父类或者接口

    具体产品:实现抽象产品的接口,包含了产品的具体细节

    产品使用者:使用产品者

    (三)代码实例

    //工厂方法设计模式
    public class FactoryMethodTest {
    public static void main(String[] args) {
    //创建某种工厂,创建对应的产品对象,执行产品对象中的doWork()方法
    PersonWorkFactory stuFac=new StudentWorkFactory();
    stuFac.getWorkClass().doWork();

    PersonWorkFactory teaFac=new TeacherWorkFactory();
    teaFac.getWorkClass().doWork();
    }
    }
    //抽象工厂
    interface PersonWorkFactory{
    Work getWorkClass();
    }
    //具体工厂,生产产品
    class StudentWorkFactory implements PersonWorkFactory{
    @Override
    public Work getWorkClass() {
    return new StudentWork();
    }
    }
    class TeacherWorkFactory implements PersonWorkFactory{
    @Override
    public Work getWorkClass() {
    return new TeacherWork();
    }
    }
    //抽象产品
    interface Work{
    void doWork();
    }
    //具体产品
    class StudentWork implements Work{

    @Override
    public void doWork() {
    System.out.println("学习!");
    }
    }
    class TeacherWork implements Work{
    @Override
    public void doWork() {
    System.out.println("教学生知识!");
    }
    }

    执行结果

    上面的核心工厂PersonWorkFactory不负责产品对象的创建工作,是一个抽象工厂的角色,只负责具体工厂子类实现的接口,这样抽象化的好处使得系统在不修改具体工厂角色的情况下,可以引进新的产品,遵循开闭原则,提高了系统的可扩展性。

    (四)优点
    (1)使用工厂方法创建具体产品对象,隐藏了具体对象的创建细节,只需要关心具体产品对应的工厂
    (2)遵循开闭原则,当加入新的产品类时,只需要同时加入相应的工厂类,实现扩展,无需修改原来的代码,提高了代码的可扩展性

    参考博客:https://www.cnblogs.com/chenxkang/p/6689631.html
    https://www.cnblogs.com/chenpi/p/5141376.html#_label3

  • 相关阅读:
    java学习之实例变量初始化
    rip中的连续子网以及不连续子网
    扫描工具
    WScript.SendKeys()的sendkeys发送组合键以及特殊字符
    sql 查询包含字符的数量统计
    leetcode题1Two sum 练习
    vs 2015密钥
    前端 边界圆角
    前端 字体样式
    前端 高级选择器 伪类选择器
  • 原文地址:https://www.cnblogs.com/shuaifing/p/10844178.html
Copyright © 2020-2023  润新知