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

设计模式-享元模式

一、用到的类

一个接口
一个接口实现类
一个享元工厂:里面有一个用于存储实现类的map,key为我们随机指定的(我们自己是知道的,以后会用这个key去获取),还有一个获取对象方法,先去map中找,找不到就创建并塞入map,找到了就返回

二、实现代码

接口代码

public interface Shape {void draw();
}

接口实现代码

public class Circle implements Shape{private String color;public Circle(String color) {this.color = color;}@Overridepublic void draw() {System.out.println("画一个圆形:"+ color);}
}

享元工厂

public class FlyweighFactory {private static final Map<String,Shape> circleMap = new HashMap<>();public Shape getCircle(String color){Shape circle = circleMap.get(color);if(circle == null){circle = new Circle(color);circleMap.put(color, circle);System.out.println("创建了" + color + "的圆形");}return circle;}
}

调用类

@SpringBootApplication
public class FlyweighApplication {public static void main(String[] args) {FlyweighFactory flyweighFactory = new FlyweighFactory();Shape circle = flyweighFactory.getCircle("red");circle.draw();Shape circle1 = flyweighFactory.getCircle("yellow");circle1.draw();Shape circle2 = flyweighFactory.getCircle("blue");circle2.draw();}
}

三、总结

享元模式的作用就是创建一个工厂,然后给要创建的对象起个名字,我们想要的时候就直接去工厂获取,无需再重新创建一个。

http://www.dtcms.com/a/265232.html

相关文章:

  • JAVA内存区域划分
  • WEB测试总结
  • ubuntu 安装neo4j
  • 七、分工说明
  • 南方大暴雨及洪水数据分析与可视化
  • 爬虫从入门到精通(22) |TLS指纹
  • 【RHCSA-Linux考试题目笔记(自用)】servera的题目
  • 【C++】--入门
  • HTTPS详解:原理 + 加解密过程 + 面试问答
  • SpringBoot:整合quartz实现定时任务-基础篇
  • 从零用java实现 小红书 springboot vue uniapp (12)实现分类筛选与视频笔记功能
  • uniapp 滚动tab
  • autoware calar 联合运行,自动驾驶虚拟仿真器
  • ESP32S3开发:实现WiFi扫描与连接功能
  • 插值与拟合(3):B样条曲线
  • MySQL 用户管理与权限控制
  • 进阶向:Django框架深度解析各核心组件的作用与协作
  • Spring生态在Java开发
  • 自动驾驶行业向端到端架构转型
  • ArrayList剖析
  • 买卖股票的最佳时机--js 算法
  • linux LAMP 3
  • 开疆智能CCLinkIE转CANopen网关连接GBS20机器人配置案例
  • 第四章 网络传输介质与综合布线基础
  • 04-动态规划
  • OpenHarmony 5.0 解决点击导航栏切换后台按钮再切换到前台导航栏可能覆盖输入法问题,导致输入法下沉,最下面的显示不全
  • day046-tomcat与部署war包、jar包
  • 为什么星敏感器(Star Tracker)需要时间同步?—— 从原理到应用的全解析
  • Day04:玩转标准库中的数据处理与日志记录
  • pytest fixture基础大全详解