首页 > 其他 > 详细

工厂方法模式

时间:2019-09-01 20:22:59      阅读:59      评论:0      收藏:0      [点我收藏+]

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:

工厂方法模式

原文:https://www.cnblogs.com/aibaiyang/p/11443115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!