当前位置: 首页 > news >正文

《Java极简设计模式》第03章:工厂方法模式(FactoryMethod)

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.gitcode.host
文章汇总:https://binghe.gitcode.host/md/all/all.html
源码地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-factorymethod

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:用最简短的篇幅介绍工厂方法模式最核心的知识,理解工厂方法模式的设计精髓,并能够灵活运用到实际项目中,编写可维护的代码。

大家好,我是冰河~~

今天给大家介绍《Java极简设计模式》的第03章,工厂方法模式(FactoryMethod),用最简短的篇幅讲述设计模式最核心的知识,好了,开始今天的内容。

一、概述

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

二、适用性

1.当一个类不知道它所必须创建的对象的类的时候。

2.当一个类希望由它的子类来指定它所创建的对象的时候。

3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

三、参与者

1.Product 定义工厂方法所创建的对象的接口。

2.ConcreteProduct 实现Product接口。

3.Creator 声明工厂方法,该方法返回一个Product类型的对象。 Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。 可以调用工厂方法以创建一个Product对象。

4.ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct实例。

四、类图

在这里插入图片描述

五、示例

Product

package io.binghe.design.factotymethod;
/*** 定义一个接口Work* @author binghe*/
public interface Work {/*** 定义方法*/void doWork();
}

ConcreteProduct

package io.binghe.design.factotymethod;
/*** Work接口的具体实现类* @author binghe*/
public class TeacherWork implements Work {public void doWork() {System.out.println("老师审批作业!");}
}
package io.binghe.design.factotymethod;
/*** Work接口的具体实现类* @author binghe*/
public class StudentWork implements Work {@Overridepublic void doWork() {System.out.println("学生做作业!");}
} 

Creator

package io.binghe.design.factotymethod;
/*** 抽象工厂接口* @author binghe*/
public interface IWorkFactory {/*** 定义获取Work实例对象的方法* @return*/Work getWork();
}

ConcreteCreator

package io.binghe.design.factotymethod;
/*** IWorkFactory工厂的实现类* @author binghe*/
public class StudentWorkFactory implements IWorkFactory {@Overridepublic Work getWork() {return new StudentWork();}
}
package io.binghe.design.factotymethod;
/*** IWorkFactory工厂的实现类* @author binghe*/
public class TeacherWorkFactory implements IWorkFactory {@Overridepublic Work getWork() {return new TeacherWork();}
}

Test

package io.binghe.design.factotymethod;
/*** 测试类* @author binghe*/
public class Test {public static void main(String[] args) {IWorkFactory studentWorkFactory = new StudentWorkFactory();studentWorkFactory.getWork().doWork();IWorkFactory teacherWorkFactory = new TeacherWorkFactory();teacherWorkFactory.getWork().doWork();}
}

Result

学生做作业!
老师审批作业!

好了,今天就到这儿吧,相信大家对工厂方法模式有了进一步的认识,我是冰河,我们下期见~~

http://www.lryc.cn/news/130731.html

相关文章:

  • C++11并发与多线程笔记(11) std::atomic续谈、std::async深入谈
  • React快速入门
  • windows权限维持—SSPHOOKDSRMSIDhistorySkeletonKey
  • CSS 两栏布局和三栏布局的实现
  • 消息中间件相关面试题
  • 成集云 | 电子签署集成腾讯云企业网盘 | 解决方案
  • 提升大数据技能,不再颓废!这6家学习网站是你的利器!
  • uniapp开发小程序-有分类和列表时,进入页面默认选中第一个分类
  • 小程序-uni-app:hbuildx uni-app 安装 uni-icons 及使用
  • PHP中in_array()函数用法详解
  • 热电联产在综合能源系统中的选址定容研究(matlab代码)
  • 校园网安全风险分析
  • kafka--kafka的基本概念-topic和partition
  • 【LVS】3、LVS+Keepalived群集
  • 对前端PWA应用的部分理解和基础Demo
  • CSGO饰品价格会一直下跌吗?市场何时止跌回升?
  • 线程池原理
  • 拷贝构造函数
  • 数据库: MySQL安装部署、主从
  • Java IO流(二)IO模型(BIO|NIO|AIO)
  • java版本spring cloud 企业工程系统管理 工程项目管理系统源码em
  • 飞天使-k8s简单搭建
  • java中把一个list转tree的方法
  • QT设置widget背景图片
  • 【ROS】话题通信--从理论介绍到模型实现(C++)
  • 服务器数据恢复-EqualLogic存储RAID5数据恢复案例
  • qsort函数详解
  • C#学习,委托,事件,泛型,匿名方法
  • 2023最新版本~KEIL5使用C++开发STM32
  • 汽车领域专业术语