【每天一个java设计模式(十一)】 - 享元模式
2021/12/23 1:19:48
本文主要是介绍【每天一个java设计模式(十一)】 - 享元模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。
享元模式的实现:
1. 创建手机类
//手机类 public class Phone { private String brand; //品牌 private int cost; //价格 public Phone(String brand){ this.brand = brand; } public void setCost(int cost) { this.cost = cost; } @Override public String toString() { return "Phone{" + "brand='" + brand + '\'' + ", cost=" + cost + '}'; } }
2. 创建手机工厂类
public class PhoneFactory { private static final HashMap<String,Phone> pool = new HashMap<>(); public static Phone getPhone(String brand){ Phone phone = pool.get(brand); if(phone == null){ phone = new Phone(brand); pool.put(brand,phone); System.out.println("创建了一个" + brand + "手机"); } return phone; } }
3. 使用享元模式
public class FlyWeightMain { public static void main(String[] args) { String[] brands = {"华为","vivo","oppo","小米","华为","vivo","oppo","小米","华为"}; for(int i=0;i<brands.length;i++){ Phone phone = PhoneFactory.getPhone(brands[i]); phone.setCost((int) (Math.random() * 5000)); System.out.println(phone.toString()); } } }
可以看到我们好像创建和很多手机实例,但是只真正创建了4个对象,其他的都是对对象的重复使用。
- 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
- 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
- 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
- 单例模式:【每天一个java设计模式(三)】 - 单例模式
- 原型模式:【每天一个java设计模式(四)】 - 原型模式
- 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式
- 适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式
- 代理模式: 【每天一个java设计模式(七)】 - 代理模式模式
- 桥接模式:【每天一个java设计模式(八)】 - 桥接模式
- 装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
- 外观模式:【每天一个java设计模式(十)】 - 外观模式
下一节:
组合模式:【每天一个java设计模式(十二)】 - 组合模式
这篇关于【每天一个java设计模式(十一)】 - 享元模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南