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

工厂模式

时间:2023-12-19 21:26:32浏览次数:33  
标签:factory 模式 工厂 Phone meizu new main

工厂模式最主要解决的问题就是创建者和调用者的耦合,

在代码层面是将通过对不同且相近对象(类似 华为手机和小米手机)的new创建方式,统一起来。

1.简单工厂模式

 

 由phone作为两手机的统一接口,使得factory直接返回phone即可,无需考虑xiaomi与meizu的返回不兼容问题,而factory能够帮助全部在main方法中new的形式统一起来,便于管理

例如:

开始
main:
Meizu meizu = new Meizu();
Xiaomi xiaomi = new Xiaomi();

...
改变后
main:
Factory factory = new Factory();
Phone meizu = factory.make("meizu“);
Phone xiaomi = factory.make("xiaomi“);

...

 

 基于上图,就假如,万一现在又出来一个叫火锅牌子的手机,我们当如何应对呢?要改的话,是不是需要进入我们的facory类修改,如果这样改,那么内个逼原则(对修改关闭对扩展开放的傻逼原则)就不乐意了,怎么办?只能把factory拿出来(我知道会有人好奇为什么不取消,你别急,往下慢慢看,你会知道的)

 

2.工厂模式

我们来分离出来factory,而main方法以这样的形式呈现

main:
Phone meizu = new Meizu.Phone();
Phone xiaomi = new Xiaomi.Phone();

...

 

3.抽象工厂模式

 (刚才能白嫖图片的作者没写抽象工厂,草,只能自己画了)

注意嗷,它底下是Factory的抽象类。这下增加工厂也方便了,为什么要把工厂抽象出来呢话说。。。。。。不知道

 

至于为啥要保留工厂,不直接调用,

 懂了吧?

 

标签:factory,模式,工厂,Phone,meizu,new,main
From: https://www.cnblogs.com/cocotun/p/17914754.html

相关文章

  • 设计模式的关系
    泛化关系泛化关系用一条带空心箭头的直接表示,可以理解为继承eg:汽车是基类,而suv这辆车就是他的子类实现关系实现关系用一条带空心箭头的虚线表示;eg:将车作为一个接口类(模糊概念,比如跑的挺快),下边的小汽车或是自行车都是车这个模糊概念的实现 聚合关系聚合关系用一条带空......
  • 创建型设计模式-原型模式
    原型设计模式是一种对象创建型模式,它通过复制现有对象来创建新的对象,而无需显式地调用构造函数。简单来说,原型设计模式就是通过克隆已有对象来创建新对象。举一个通俗易懂的例子,假设我们有一个图形库,其中有一个基类Shape表示图形,它有一个纯虚函数draw()用于绘制图形。现在我们......
  • 化工厂人员定位系统解决方案,融合UWB定位技术,实现室内外精准定位
    行业背景1、人车位置不精准:无法实时查看内外部人员和车辆的精准位置,遇到突发安全事故,无法及时确认人员位置并制定有效的救援方案。2、作业安全保障弱:难以管控人员和车辆非法进入重大危险源区域、高危装置区、特殊作业区、罐区、装卸站台、检修区域等重点监管区域。3、智能管控待提......
  • 代理模式理解
    代理模式其实称为网关模式就很好理解,即代理就是那个网关,它只是会额外的做一些操作(比如日志记录,拦截等),然后原封不动的将参赛调用被代理对象,然后再将被代理对象(各方法)执行后拿到的结果返回给调用放;即中间多了一个代理层(网关);网关需要配置被代理服务的地址,同样的代理对象需要配置被......
  • 深入 K8s 网络原理(一)- Flannel VXLAN 模式分析
    目录1.概述2.TL;DR3.Pod间通信问题的由来4.测试环境准备5.从veth设备聊起6.网桥cni06.1在Pod内看网卡信息6.2在host上看网卡信息7.VTEPflannel.18.最后看下Flannel的配置9.总结1.概述这周集中聊下K8s的集群网络原理,我初步考虑分成3个方向:Pod-to-Pod......
  • 格式工厂MP4视频转格式(H265->H264)图文详解
    最近上传到网站上的视频播放时只有声音没有图像,但是在本地播放一切正常,检查后发现问题是有些浏览器不支持播放H265格式的视频。不能让访问网站的用户去换浏览器或者单独安装浏览器插件,最简单的解决办法还是自己转化视频格式重新上传。推荐一个老牌免费使用简单的视频格式转换软件—......
  • 用闭包写个单例模式
    DN对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数的局部变量的变量,由此可以看出,闭包=函数+函数能够访问的自由变量,所以从技术的角度讲,所有JS函数都是闭包,但是这是理论上的闭包,还有一个实践角度上的闭包,从实践角度上来......
  • 异步记录第三方接口调用日志的优雅实现(HttpClient+装饰者模式+异步线程池)
    对于第三方接口调用日志这个功能,笔者在工作中曾见过以下两种方式:Restemplate+装饰者模式+MQ实现网关监控+Feign拦截器+观察者模式实现其中观察者模式的实现是我最为佩服的设计,个人认为以上两种实现都显得略过臃肿,应该简化设计,让异步记录的实现更加简洁优雅,因此产生了这样......
  • 设计模式的七大原则
    目的:使程序高内聚、低耦合、高重用、高灵活,可维护性好,可扩展性高。设计模式的三种类型:创建型:单例、工厂、抽象工厂、原型、建造者结构型:适配器、桥接、装饰、组合、外观、享元、代理行为型:模板法、命令、访问者、迭代器、观察者、中介者、备忘录、解释器、状态、策略、责任链......
  • 设计模式复习
    单一职责原则(SingleResponsibilityPrinciple)定义:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能......