浅析java设计模式之工厂模式

工厂模式

描述:
工厂模式实际上就是提供一个获取对象实例的工厂,比如一个球类工厂生产篮球和足球,通过调用工厂的build方法去获得具体球类的对象,至于如何去创建和获得这个对象实例则不是我们需要关心的东西。

常用场景:
在不同条件下明确需要获得不同的对象,而其创建对象的方式并不被关心的时候。
如服装厂,获取衣服和裤子等服装。

项目结构:
在这里插入图片描述

实现:
1.工厂模式的接口类

/**
 * @author Carl
 * @version 1.0
 * @date 2020/8/4 14:03
 * @description 工厂模式的接口类
 **/
public interface Ball {
    void doSomething();
}

2.ball接口类的实现类–篮球

/**
 * @author Carl
 * @version 1.0
 * @date 2020/8/4 14:05
 * @description ball接口类的实现类--篮球
 **/
public class Basketball implements Ball {
    @Override
    public void doSomething() {
        System.out.println("get a basketball");
    }
}

3.ball接口类的实现类–足球

/**
 * @author Carl
 * @version 1.0
 * @date 2020/8/4 14:06
 * @description ball接口类的实现类--足球
 **/
public class Football implements Ball {
    @Override
    public void doSomething() {
        System.out.println("get a football");
    }
}

4.ball工厂类

/**
 * @author Carl
 * @version 1.0
 * @date 2020/8/4 14:07
 * @description 球类工厂
 **/
public class BallFactory{
    public static Ball build(String whichBall){
        if("basketball".equals(whichBall)){
            return new Basketball();
        }else if ("football".equals(whichBall)){
            return new Football();
        }else {
            return null;
        }
    }
}

5.测试

/**
 * @author Carl
 * @version 1.0
 * @date 2020/8/4 14:11
 * @description
 **/
public class Domain {
    public static void main(String[] args) {
        Ball basketball = BallFactory.build("basketball");
        basketball.doSomething();
        Ball football = BallFactory.build("football");
        football.doSomething();
    }
}

6.测试结果

get a basketball
get a football

说明
1.Basketball和Football类实现了Ball接口类
2.BallFactory的build方法返回Ball类型的对象实例
3.通过直接调用BallFactory.build()方法的入参名称返回basketball或者football类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值