当前位置:首页 >综合 >别扯了,工厂方法模式其实很简单 并能够灵活运用到实际项目中

别扯了,工厂方法模式其实很简单 并能够灵活运用到实际项目中

2024-06-30 21:52:56 [百科] 来源:避面尹邢网

别扯了,别扯了工厂方法模式其实很简单

作者:冰河 开发 前端 Creator 声明工厂方法,工厂该方法返回一个Product类型的模式对象。Creator也可以定义一个工厂方法的其实缺省实现,它返回一个缺省的简单ConcreteProduct对象。可以调用工厂方法以创建一个Product对象。别扯了
  • 本章难度:★★☆☆☆
  • 本章重点:用最简短的工厂篇幅介绍工厂方法模式最核心的知识,理解工厂方法模式的模式设计精髓,并能够灵活运用到实际项目中,其实编写可维护的简单代码。

大家好,别扯了我是工厂冰河~~

今天给大家介绍《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 {  @Override    public 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 {  @Override    public Work getWork() {         return new StudentWork();    }}
package io.binghe.design.factotymethod;/** * IWorkFactory工厂的实现类 * @author binghe */public class TeacherWorkFactory implements IWorkFactory {  @Override    public 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

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

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

责任编辑:武晓燕 来源: 冰河技术 Creator工厂方法Creator

(责任编辑:百科)

    推荐文章
    热点阅读