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

面向对象设计模式详解(Java版)----创建型模式

1. 单例模式说明确保一个类只有一个实例并提供全局访问点。常用于线程池、缓存、日志对象等全局唯一资源避免重复创建造成开销或不一致状态。作用控制实例数量节约内存提供全局访问入口。场景数据库连接池、配置管理器、日志记录器。关键点私有构造器线程安全双重检查锁或静态内部类防止反射与序列化破坏单例。代码示例菜单配置管理器public class MenuConfig { private static MenuConfig instance; private String shopName 快乐汉堡店; private MenuConfig() {} public static synchronized MenuConfig getInstance() { if (instance null) instance new MenuConfig(); return instance; } public String getShopName() { return shopName; } } public static void main(String[] args) { MenuConfig config MenuConfig.getInstance(); System.out.println(config.getShopName()); // 快乐汉堡店 }2. 工厂方法模式说明定义创建对象的接口但由子类决定实例化哪个具体类。将产品实例化延迟到子类使主类不依赖具体产品符合开闭原则。作用解耦产品创建与使用支持产品族扩展。场景不同品牌汽车生产日志记录器文件或数据库。关键点抽象工厂类与具体工厂子类产品接口符合开闭原则但对产品族扩展较弱。代码示例不同口味汉堡工厂interface Burger { String getInfo(); } class BeefBurger implements Burger { public String getInfo() { return 牛肉堡; } } class ChickenBurger implements Burger { public String getInfo() { return 鸡肉堡; } } interface BurgerFactory { Burger create(); } class BeefFactory implements BurgerFactory { public Burger create() { return new BeefBurger(); } } class ChickenFactory implements BurgerFactory { public Burger create() { return new ChickenBurger(); } } public class FactoryMethodDemo { public static void main(String[] args) { BurgerFactory factory new BeefFactory(); Burger burger factory.create(); System.out.println(burger.getInfo()); // 牛肉堡 } }3. 抽象工厂模式说明创建一系列相关或相互依赖的产品族而不指定具体类。适合需要整体替换产品族如不同操作系统界面的场景保证产品间兼容性。作用创建一组配套产品保证产品间一致性。场景跨平台UI组件Windows或Mac的按钮与输入框不同数据库操作。关键点产品族扩展容易而产品等级扩展难抽象工厂接口配合多个产品接口。代码示例儿童套餐与成人套餐工厂interface Burger { String name(); } interface Drink { String name(); } class SmallBurger implements Burger { public String name() { return 小汉堡; } } class SmallCoke implements Drink { public String name() { return 小可乐; } } class BigBurger implements Burger { public String name() { return 大汉堡; } } class BigCoke implements Drink { public String name() { return 大可乐; } } interface MealFactory { Burger createBurger(); Drink createDrink(); } class KidMealFactory implements MealFactory { public Burger createBurger() { return new SmallBurger(); } public Drink createDrink() { return new SmallCoke(); } } public class AbstractFactoryDemo { public static void main(String[] args) { MealFactory factory new KidMealFactory(); Burger burger factory.createBurger(); Drink drink factory.createDrink(); System.out.println(burger.name() drink.name()); // 小汉堡 小可乐 } }4. 建造者模式说明将复杂对象的构造与表示分离同一构造过程可创建不同表示。通过链式调用逐步设置可选参数清晰构建如披萨、查询请求等多属性对象。作用分步构建复杂对象控制构造顺序和细节。场景制作披萨尺寸、酱料、配料SQL查询构造器Lombok的Builder。关键点指挥者、建造者接口与具体建造者链式调用内部静态Builder类。代码示例汉堡定制public class Hamburger { private String size, meat, sauce; private Hamburger(Builder b) { this.size b.size; this.meat b.meat; this.sauce b.sauce; } public static class Builder { private String size, meat, sauce; public Builder setSize(String size) { this.size size; return this; } public Builder setMeat(String meat) { this.meat meat; return this; } public Builder setSauce(String sauce) { this.sauce sauce; return this; } public Hamburger build() { return new Hamburger(this); } } public static void main(String[] args) { Hamburger burger new Hamburger.Builder() .setSize(大).setMeat(牛肉).setSauce(番茄).build(); System.out.println(burger.getInfo()); // 大号牛肉堡番茄 } }5. 原型模式说明通过复制现有实例来创建新对象避免昂贵初始化。实现克隆方法区分深浅拷贝适合创建成本高且结构相似的对象如文档模板或图形对象。作用避免昂贵初始化开销快速复制对象。场景文档模板克隆图形编辑器复制图形缓存对象复制。关键点实现Cloneable接口重写clone方法区分浅拷贝与深拷贝原型管理器。代码示例汉堡模板克隆class BurgerPrototype implements Cloneable { private String type; public BurgerPrototype(String type) { this.type type; } public BurgerPrototype clone() { try { return (BurgerPrototype) super.clone(); } catch (CloneNotSupportedException e) { return null; } } public void setType(String type) { this.type type; } public static void main(String[] args) { BurgerPrototype template new BurgerPrototype(牛肉堡); BurgerPrototype copy template.clone(); copy.setType(鸡肉堡); System.out.println(copy.getType()); // 鸡肉堡 } }
http://www.zskr.cn/news/1397753.html

相关文章:

  • 2026年现阶段,如何筛选安徽图文快印服务商?这份深度指南与品牌解析请查收 - 2026年企业资讯
  • 长春市场热门的圣科授权店,到底哪家才可靠呢?
  • 从STM32的空闲中断到HC32F460的超时中断:国产MCU串口高效接收数据包实战指南
  • 2026现阶段如何选择可靠的钻筒服务团队?优质供应商深度解析 - 2026年企业资讯
  • Lattice LFCPNX-100 HSB+Fpga开发详解:2.2 Marvell MV-Q3244 Phy的Podl电路详解
  • UOS系统更新后软件图标消失?一个命令解决,顺便聊聊dpkg的“刷新”机制
  • 2026年PDF转Word免费推荐:这5款工具真正无损还原格式 - 时时资讯
  • 美国签证申请实用指南
  • AI硬件的下一程,这场分论坛给你答案
  • 终极指南:八大网盘直链下载助手LinkSwift完整教程与高效配置方案
  • 2026年 徐州/江苏柜体厂家推荐排行榜:多层无漆柜体、实木烤漆柜体、橱柜衣柜阳台柜柜体源头实力品牌精选 - 品牌企业推荐师(官方)
  • 2026 实测!视频号视频无水印下载方法
  • 2026年5月有实力的快装阳光房配件厂家排行推荐榜,快装阳光房配件、阳光房连接件、阳光房角码厂家选择指南 - 海棠依旧大
  • 量子纠错码与低连接硬件:方向码的创新与应用
  • 大语言模型处理大规模代码的认知误区与合理实践
  • 嵌入式开发避坑指南:当你的Hello World在开发板上跑不起来(GLIBC版本问题详解)
  • 用GDB调试C程序,一步步看RSP和RBP寄存器在函数调用时怎么变
  • 打破常规!沉浸式展厅解锁空间新玩法:让空间“消失”,让体验“出现”
  • 第6课:查看海龟的API文档
  • 拯救你的macOS菜单栏!Ice菜单栏管理神器完全指南
  • 2026年5月正规的心理测评系统公司怎么选厂家推荐榜,心理测评软件、心理测评一体机、云心理测评平台厂家选择指南 - 海棠依旧大
  • 我是如何把一个接口的响应时间从 2s 优化到 50ms 的
  • OPC中国是什么?一文读懂OPC开源共创社区
  • 青少年护眼大路灯推荐怎么做?西屋揽光G7如何实现学习/小憩/助眠三场景覆盖
  • Windows脚本编程避坑指南:Wscript.Shell的Run方法和环境变量那些事儿
  • 东莞硅胶制品定制完整流程,小白也能一次看懂
  • 用Python从零实现一个井字棋AI:手把手教你理解Minimax算法
  • 2026年洁净工程厂家推荐榜单:医疗洁净室/医疗器械/医药制药/食品饮料/化妆品/生物技术/手术室/GMP恒温恒湿车间最新优选 - 企业推荐官【官方】
  • Vue2 + TS,分路径参数、查询参数、装饰器组件 / Vue.extend 两种写法,同时补充类型约束、监听路由、动态路由取值。
  • 别再手动改写!用这6个嵌套式Prompt链,让ChatGPT自动生成符合出版级审校标准的创意文本