工厂方法模式

99封情书 提交于 2019-11-29 03:26:42

1、工厂方法模式:定义一个用于创建对象的接口,让之类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

 

2、题目:学雷锋,帮社区老人扫地,洗衣服,买米,做好事。

 

3、UML图:

4、代码示例:

4.1、雷锋相关类:

LeiFeng类
package com.aibaiyang.idemo.service.factorymethod;

import lombok.Data;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:14
 * @description 雷锋类
 **/
@Data
public class LeiFeng {

    public void sweep(){
        System.out.println("扫地");
    }

    public void wash(){
        System.out.println("洗衣服");
    }

    public void buyRice(){
        System.out.println("买米");
    }

}
View Code
Undergraduate类
package com.aibaiyang.idemo.service.factorymethod;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:17
 * @description 学雷锋的大学生
 **/
public class Undergraduate extends LeiFeng{

}
View Code
Volunteer类
package com.aibaiyang.idemo.service.factorymethod;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:18
 * @description 社区志愿者
 **/
public class Volunteer extends LeiFeng{

}
View Code

4.2、雷锋工厂相关类

IFactory接口
package com.aibaiyang.idemo.service.factorymethod;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:18
 * @description 雷锋工厂
 **/
public interface IFactory {

    /**
     * 创建雷锋对象
     * @return
     */
    LeiFeng createLeiFeng();

}
View Code
UndergraduateFactory类
package com.aibaiyang.idemo.service.factorymethod;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:20
 * @description 学雷锋大学生工厂
 **/
public class UndergraduateFactory implements IFactory{

    @Override
    public LeiFeng createLeiFeng() {
        return new Undergraduate();
    }

}
View Code
VolunteerFactory类
package com.aibaiyang.idemo.service.factorymethod;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:21
 * @description 志愿者工厂
 **/
public class VolunteerFactory implements IFactory {

    @Override
    public LeiFeng createLeiFeng() {
        return new Volunteer();
    }

}
View Code

4.3、工厂方法模式客户端

package com.aibaiyang.idemo.service.factorymethod;

/**
 * @Author zhong guo
 * @Date 2019/8/30 19:22
 * @description 工厂方法客户端
 **/
public class FactoryMethodClient {

    public static void main(String[] args) {

        //工厂方法模式

        //此处为学雷锋学生工厂,若要替换成志愿者,只需替换工厂类即可
//        IFactory factory = new UndergraduateFactory();
        IFactory factory = new VolunteerFactory();

        LeiFeng student = factory.createLeiFeng();
        student.wash();
        student.sweep();
        student.buyRice();

    }

}
View Code

5、github:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!