3.设计模式-工厂模式

前言

这两天看了不少关于工厂模式的文章,但是对于理解该模式深度并没有什么突破,可能个人能力原因吧。所以还是依照网上一些比较常规的方式整理一下。
问题:为什么需要用工厂模式?
1.为了解耦
把对象的创建和使用过程分开,因为有的对象创建可能并不一定只是一个简单的new 就完了,还涉及到其它处理。但是使用者是不需要关心的,所以采用工厂设计模式能达到这样的一个效果。就像你只关心吃饭,而不需要关心这个饭菜怎么做出来的,那你就不需要自己做饭,直接去外面餐馆吃饭即可。
2.更好的控制过程
正如上面所说的,我们在创建对象的过程中,可能不只是简单的new 一下,而是需要对创建对象过程进行一些控制,比如权限控制,日志控制等等。
3.规范管理
既然是创建对象,那么可能就会有很多地方会用到,如果创建对象的过程比较复杂,那么就会产生很多冗余代码,而采用设计模式的形式能够降低这种情况。
还有就是如果不使用设计模式,我们的结构层次可能比较容易混乱,比如数据库连接,如果框架不提供统一的接口,那么每个供应商都会搞些东西,你叫createDataSource,我叫ProduceDataSource(),而如果有统一的接口,那大家来实现我的接口,这样我的接口就起到了带头作用,相当于有一根绳子拎着的。


一、简单工厂模式

比如对于我们硬件来说,我们可以生产键盘产品,鼠标产品等等。那我们首先抽象一个硬件的接口出来,让具体的产品实现这个接口。然后再创建一个工厂类出来负责生产对象。具体代码如下:

/**
 * 定义一个硬件组件的公共接口,多态的运用
 */
public interface HardComponent{
   
}
/**
 * 键盘类
 */
public class KeyBoard implements HardComponent{
   
    public KeyBoard(){
   
        System.out.println("创建了一个键盘");
    }
}
/**
 * 鼠标类
 */
public class Mouse implements HardComponent{
   
    public Mouse(){
   
        System.out.println("创建了一个鼠标");
    }
}
/**
 * 生产硬件组件的工厂
 */
public class HardComponentFactory {
   
    public HardComponent createHardComponent(String type) throws Exception{
   
        //通过类型进行匹配
        if("keyBoard".equals(type)){
   
            return  new KeyBoard();
        }else if("mouse".equals(type)){
   
            return  new Mouse();
        }else{
   
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值