您当前的位置: 首页 > 

喜欢猪猪

暂无认证

  • 2浏览

    0关注

    228博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式--》工厂模式

喜欢猪猪 发布时间:2018-06-15 17:18:09 ,浏览量:2

定义:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式是以一个类的实例化延迟到其子类。
Factory Method模式用于在不指定待创建对象的具体类的情况下创建对象。
Factory Method模式的主要意图是隐藏对象创建的复杂性。Client通常不指定要创建的具体类,Client将面向接口或抽象类进行编码,让Factory类负责创建具体的类型。通常Factory类有一个返回抽象类或者接口的静态方法。Client通常提供某种信息让Factory类使用提供的信息来确定创建并返回哪个子类。
将创建子类的责任抽象出来的好处是允许Client完全无需考虑依赖类是如何创建的,这遵守依赖倒置原则(Dependency Inversion,DIP)。Factory Method模式的另外一个好处是把负责对象创建的代码集中起来,如果需要修改对象的生成方式,可以轻松的定位并更新,而不会影响到依赖的代码。

介绍:
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟子类进行。
主要解决:主要解决接口选择的问题。
何时使用:明确计划不同条件下创建不同的实例时。
如何解决:让其子类实现工厂接口,返回一个抽象的产品。
关键代码:创建过程在其子类执行。
应用实例:你需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎样做出来的,以及这个汽车里面的具体实现,2.Hibernete换数据库只需换个方法和驱动就可以了

优点:一个调用者想创建一个对象,只要知道其名称就可以了。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以了。屏蔽产品的具体实现,调用者只会关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统的具体类的依赖,这并不是好事。

使用场景:日志记录器,记录可能记录到本地硬盘,系统事件,远程服务器等,用户可以选择记录日志到什么地方。数据库访问,当用户不知道最后系统采用那一类数据库,以及数据库可能有变化时。设计一个连接服务器的框架,需要三个协议,POP3、IMAP、HTTP,可以把这三个作为产品类,共同实现一个接口。
注意事项:作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过new就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。
关注
打赏
1648795721
查看更多评论
立即登录/注册

微信扫码登录

0.0369s