美文网首页
所谓工厂模式

所谓工厂模式

作者: kill_ec94 | 来源:发表于2019-08-28 21:35 被阅读0次

1.从ChannelFactory来看工厂模式:

一直以来,我都是对于工厂模式有着很大的困惑,虽然也看了网上的诸多文章,什么简单工厂啦,工厂方法啦,甚至抽象工厂方法啦,这里稍微记录一下这三个东西:

简单工厂:定义一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。

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

抽象工厂:工厂方法的仅一步深化,在这个模式中的工厂类不单单可以创建一个对象,而是可以创建一组对象。这是和工厂方法最大的不同点。

以上这些我觉得都不重要,因为在我看来这些东西真的没啥卵用,我干嘛一定要用工厂方法呢,我好好的构造器用着也很好啊,我就喜欢用构造器new一个对象出来,我也没觉得你这个工厂方法优势在哪里啊。

直到,我看到了知乎上某大佬的一句话:“真正逼迫我们使用工厂方法的,是来源于这么一个事实:组合大于继承

这话乍一看感觉挺没道理的,但仔细想来,假如我有这么个接口的实现类,里面有十几二十个属性,有八九个构造器方法,这个是不是一个很常见的类的形式,因为我们更希望以组合的形式来构造类。那么问题来了,我如果作为对这个类的调用方,想要构造,咋构造,里面错综复杂的逻辑和构造方法让我觉得很烦,我就想简单的搞一下就行,而且更讨厌的是,每一个调用方都要面对这些东西。所以工厂方法这个时候就体现价值出来了,调用方不用操心这个,交给工厂来做,就一个create方法,啥参数都不用给,我自己就给你实现好这个构造。

现在,假设有 十个调用方,那每个调用方只需要找到自己想要的那个factory就行了,然后简单的一个create,世界清净了,把对象创建和对象调用给解耦开,这个是我认为工厂模式最大的意义所在。

回到netty的这个工厂中来,这个更偷懒,它提供了一个反射实现工厂方法的实现类,把构造交给具体的各自实现就行。

publicclassReflectiveChannelFactory<TextendsChannel>implementsChannelFactory<T>{

privatefinalConstructor<?extendsT>constructor;

publicReflectiveChannelFactory(Class<?extendsT>clazz) {

ObjectUtil.checkNotNull(clazz,"clazz");

try{

this.constructor=clazz.getConstructor();

}catch(NoSuchMethodExceptione) {

thrownewIllegalArgumentException("Class "+StringUtil.simpleClassName(clazz)+

" does not have a public non-arg constructor",e);

       }

   }

@Override

publicTnewChannel() {

try{

returnconstructor.newInstance();

}catch(Throwablet) {

thrownewChannelException("Unable to create Channel from class "+constructor.getDeclaringClass(),t);

       }

   }

}

所以,大部分情况下,只需要传一个具体实现类的channel,就生产出这个类来了。

相关文章

  • 所谓工厂模式

    1.从ChannelFactory来看工厂模式: 一直以来,我都是对于工厂模式有着很大的困惑,虽然也看了网上的诸多...

  • js面向对象

    js面向对象 方法一:工厂模式 所谓工厂模式,简单点儿说就是按照工厂生产的过程创建对象,原材料->加工->返还产品...

  • 简单工厂模式

    简介 所谓工厂模式就是用工厂方法代替new方法来产生所需要的对象。而简单工厂模式则是是由一个工厂对象决定创建出哪一...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 设计模式---工厂模式

    1、工厂模式 所谓工厂模式,就是作为一个工厂的类有一个对象以及与它关联的多个方法,客户端使用某些参数调用此方法,之...

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

网友评论

      本文标题:所谓工厂模式

      本文链接:https://www.haomeiwen.com/subject/xfdvectx.html