首页 > 其他分享 >工厂模式 Factory Method

工厂模式 Factory Method

时间:2023-12-21 09:04:07浏览次数:24  
标签:创建 Factory 工厂 实例 design 创建对象 com Method 客户端

一、简单工厂

定义一个工厂类,根据传入的参数的值的不同返回不同是实例

1、特点

被创建的实例具有共同的父类或接口
image.png

2、适用场景

  • 需要创建的对象较少
  • 客户端(应用层)只知道传入工厂的参数,对如何创建对象(逻辑)不关心

3、优缺点

优点:
可以对创建的对象进行“加工”,对客户端隐藏相关细节
缺点:

  • 因创建逻辑复杂或创建对象过多而造成代码臃肿
  • 新增、删除子类均会违反开闭原则 OpenClose

4、代码参考

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/creational/simplefactory

UML类图
image.png

二、工厂方法模式

1、特点

定义一个用于创建对象的接口,让子类决定实例化哪一个类

  • 对类的实例化延迟到其子类

image.png

2、使用场景

  • 创建对象需要大量重复的代码
  • 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
  • 一个类通过其子类来指定创建哪个对象

3、优缺点

优点:

缺点:

  • 添加子类的时候“拖家带口”(类的个数容易过多,增加系统复杂度)
  • 只支持用一类产品的创建

4、代码参考

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/creational/factorymethod

UML类图
image.png

标签:创建,Factory,工厂,实例,design,创建对象,com,Method,客户端
From: https://www.cnblogs.com/meidanlong/p/17918174.html

相关文章

  • 抽象工厂模式 Abstract Factory
    一、定义提供一个创建一系列相关或相互依赖对象的接口抽象工厂模式侧重的是同一产品族,而抽象工厂侧重的是同一产品等级二、适用场景客户端(应用层)不依赖于产品类实例如何被创建、实现等细节强调一些列相关的产品对象(属于同一产品族)一起使用,创建对象需要大量复杂代码提......
  • Why caused the dead factory?
    Thedeathofafactorycanbecausedbyvariousfactors,whichcanbebroadlycategorizedintoeconomic,social,andenvironmentalreasons.Someofthekeyfactorsthatcontributetotheclosureofafactoryincludethelackofdemandfortheproduct,hig......
  • Why the developed country choose the countries of southeast Asia to build proces
    ThedevelopedcountrieschoosecountriesinSoutheastAsiatobuildprocessingfactoriesandutilizetheirlaborforceforvariousreasons.Someofthekeyfactorsthatcontributetothisdecisionincludethelowcostoflabor,favorablegovernmentpolici......
  • 工厂模式
    工厂模式最主要解决的问题就是创建者和调用者的耦合,在代码层面是将通过对不同且相近对象(类似华为手机和小米手机)的new创建方式,统一起来。1.简单工厂模式  由phone作为两手机的统一接口,使得factory直接返回phone即可,无需考虑xiaomi与meizu的返回不兼容问题,而factory能够帮......
  • 化工厂人员定位系统解决方案,融合UWB定位技术,实现室内外精准定位
    行业背景1、人车位置不精准:无法实时查看内外部人员和车辆的精准位置,遇到突发安全事故,无法及时确认人员位置并制定有效的救援方案。2、作业安全保障弱:难以管控人员和车辆非法进入重大危险源区域、高危装置区、特殊作业区、罐区、装卸站台、检修区域等重点监管区域。3、智能管控待提......
  • 格式工厂MP4视频转格式(H265->H264)图文详解
    最近上传到网站上的视频播放时只有声音没有图像,但是在本地播放一切正常,检查后发现问题是有些浏览器不支持播放H265格式的视频。不能让访问网站的用户去换浏览器或者单独安装浏览器插件,最简单的解决办法还是自己转化视频格式重新上传。推荐一个老牌免费使用简单的视频格式转换软件—......
  • 启用微服务报错:Method has too many Body parameters
    启用微服务报错:MethodhastoomanyBodyparameterspackagecom.llq.springcloud.controller;@RestControllerpublicclassStorageController{@ResourceprivateStorageServicestorageService;//扣减库存你@PostMapping("/storage/reduce")......
  • Spring Boot 之 ModelFactory
    1.initModel    功能:publicvoidinitModel(NativeWebRequestrequest,ModelAndViewContainercontainer,HandlerMethodhandlerMethod) throwsException{ Map<String,?>sessionAttributes=this.sessionAttributesHandler.retrieveAttributes(request)......
  • llama-factory fine-tuning 4 (mixtral fine-tuning)
    introductionfine-tuningcommandclicktoviewthecodeCUDA_VISIBLE_DEVICES=0pythonsrc/train_bash.py\--stagesft\--do_train\--model_name_or_path../Mixtral-8x7B-v0.1/\--datasetalpaca_en\--templatemistral\--q......
  • Comparison method violates its gene
    1、如果我没有写这一步,就会报这个错误了2、分析,应该是你一会进行长度排序,一会是字符串的compare分析。如果长度小于,不做判断的话。显然和compare会冲突。3、加上小于这步就可以了 ......