当前位置: 首页 > news >正文

设计模式(六)—— 适配器模式、建造者模式/生成器模式、命令模式、工厂模式

一、适配器模式

理解①:很简单,可以直接理解成“充电器转接头”。

理解②:asList源码的注解里将其比喻为一个bridge,如下图:

理解③:我通过调用第一个API得到一个返回,然后这个返回需要作为第二个API的参数,但是二者类型不同,所以我就需要一个适配器。在调用第一个API和调用第二个API之间,调用一下这个适配器,给我转换一下。编程变得如此简单!

写一个便于理解的小demo

public 适配器方法(OldObject oldObj){ NewObject newObj= new NewObject(); newObj.setName("_weChat_id_"+oldObj.getName()); newObj.setTranCode("WPS"+oldObj.getTranCode()); newObject.setXxx(... oldObj.getXxx()); .....; .....; return newObj; } main(){ //1.API1返回一个陈旧的对象 OldObject oldObj = API1(); //2.转换一下 NewObject newObj = 适配器方法(oldObj); //3.就可以作为API2的入参了 API2(newObj); }

二、建造者模式/生成器模式

先简单记一下,以后再来认真写

还是造房子那个例子,一个房子分为①打地基 ② 砌墙 ③封顶三步,如果不用设计模式去写的话。就是一个超类,然后多个子类继承超类去重写

但是这样有两个缺点:

(1)产品和建造的过程是高度耦合的(针对这个问题,单独定义product类,以组合的方式放在Builder超类的成员变量中)

(2) 客户端(main方法)调用的时候,必须了解建房的步骤,要了解应该先打地基,再。。(针对这个问题,出现了Director,指挥者知道建房子的步骤就行了,客户端调用的时候,直接new一个指挥者,客户端啥都不用知道)

三、工厂模式

世间所有设计模式都是同一个设计模式——识别变化点并隔离变化点

如何封装?没有什么是加一层不能解决的。加的这一层就是工厂

其次还是要重申一遍,23个设计模式可以分成三大类:创建型模式、结构型模式、行为型模式。本次学的工厂类属于创造型模式,你要有了这个概念,才知道我们下面是在研究如何更好的构造对象。

简单工厂模式就是,不管什么车都放到一个工厂里去做;工厂模式就是一个车型一个工厂,如果有新型车就再开一个新工厂。

真实开发中,二者没有优劣之分,都能用,如果你的产品少,并且业务基本上不改,那完全可以用简单工厂模式呀。

3.1 简单工厂模式

由工厂类根据传入的参数,决定创建哪种具体的通知对象。

// 抽象产品:汽车 abstract class Car { public abstract void drive(); } // 具体产品:轿车 class Sedan extends Car { @Override public void drive() { System.out.println("驾驶轿车,舒适平稳"); } } // 具体产品:SUV class SUV extends Car { @Override public void drive() { System.out.println("驾驶SUV,视野开阔"); } } // 简单工厂:汽车工厂 class CarFactory { public static Car createCar(String type) { if ("sedan".equalsIgnoreCase(type)) { return new Sedan(); } else if ("suv".equalsIgnoreCase(type)) { return new SUV(); } else { throw new IllegalArgumentException("未知车型: " + type); } } } // 客户端 public class SimpleFactoryExample { public static void main(String[] args) { Car car1 = CarFactory.createCar("sedan"); car1.drive(); Car car2 = CarFactory.createCar("suv"); car2.drive(); } }

但是我们要新增一个新车型的话,还是要打开工厂类去新增里面的if-else,那就再继续隔离变化点——继续拆!

3.2 工厂模式

定义一个抽象工厂,将具体创建哪款车的决定延迟到子工厂中。每个车型都有自己专属的工厂。

// 抽象产品:汽车 abstract class Car { public abstract void drive(); } // 具体产品:轿车 class Sedan extends Car { @Override public void drive() { System.out.println("驾驶轿车,舒适平稳"); } } // 具体产品:SUV class SUV extends Car { @Override public void drive() { System.out.println("驾驶SUV,视野开阔"); } } // 抽象工厂:汽车工厂(创建者) abstract class CarFactory { // 工厂方法:由子类决定生产哪种车 public abstract Car createCar(); // 模板方法:造车 + 试驾 public void testDrive() { Car car = createCar(); System.out.print("新车下线 -> "); car.drive(); } } // 具体工厂:轿车工厂 class SedanFactory extends CarFactory { @Override public Car createCar() { return new Sedan(); } } // 具体工厂:SUV工厂 class SUVFactory extends CarFactory { @Override public Car createCar() { return new SUV(); } } // 客户端 public class FactoryMethodExample { public static void main(String[] args) { CarFactory sedanFactory = new SedanFactory(); sedanFactory.testDrive(); // 生产轿车并试驾 CarFactory suvFactory = new SUVFactory(); suvFactory.testDrive(); // 生产SUV并试驾 } }
http://www.zskr.cn/news/1401712.html

相关文章:

  • 华为防火墙USG6309E开局实战:从零构建安全网络通道
  • 选择Token Plan套餐后项目月度AI调用成本的可控性分析
  • DDrawCompat终极指南:让Windows 10/11完美运行经典游戏的免费解决方案
  • 2026年宜昌装修公司TOP10排行榜:金螳螂家以硬核实力打造高性价比口碑家装 - 速递信息
  • Keil MDK开发板USB主机大容量存储类开发指南
  • 从“禁用”到“启用”:手把手教你解锁BIOS中的Intel VT-x虚拟化技术
  • Windows 11终极优化指南:用开源工具Win11Debloat轻松打造纯净系统
  • 广州包包回收行情解读!看懂成色估价,卖包不亏价 - 奢侈品回收测评
  • Lua 延时与定时器:从基础 API 到高并发场景下的实战避坑指南
  • 如何通过智能自动化工具将英雄联盟游戏体验提升到全新高度?
  • [特殊字符] 论文写完不敢交?这个AI免费查重功能,90%的同学还不知道!
  • 清华大学thuthesis论文模板:在Overleaf上撰写完美学位论文的终极指南
  • 如何用Xposed模块实现Android微信双设备登录:终极技术指南
  • 避坑指南:OrCAD Capture CIS配置DBC和.ini文件时,90%新手会踩的5个雷
  • 深圳物业经理培训哪家好?鑫诺教育:6年专注物业考证,高通过率更靠谱 - 奔跑123
  • FModel:虚幻引擎游戏资源逆向工程与资产提取技术深度解析
  • 杭州市钱塘区杭来环保科技:杭州水下打捞公司 - LYL仔仔
  • 【OpenCV 实战指南】从零构建图像:np.zeros与NumPy数组的创世魔法
  • 如何用League Akari实现英雄联盟游戏体验的智能自动化提升
  • 创业团队如何进行技术规划
  • AceGPT-13B:革命性阿拉伯语大语言模型,超越ChatGPT的终极解决方案
  • React Native应用快速集成AI能力:五分钟实现智能对话功能
  • 双自编码器架构:统一图像翻译与补全的鲁棒生成模型
  • 创业踩坑实录:这家口碑好的魔术贴工厂,让我的产品品质显著提升! - 变量人生001
  • 踩坑之旅:对micro:bit V2功能之稀缺吐槽,无法实现自带扬声器播放音乐音频、无法连接wifi
  • 3步轻松掌控学习自主权:JiYuTrainer高效教学工具指南
  • 山西瓦斯事故警钟长鸣|透明矿山斩断隐蔽工作面,科技筑牢安全“防火墙”
  • 2026年推荐一下驾校正规企业 - 品牌推广大师
  • JUC并发编程知识一(待完善)
  • 无锡婚姻律师事务所口碑排行:专业实力实测对比 - 奔跑123