《图解设计模式》 第九部分 避免浪费

news/2024/11/5 13:47:07/文章来源:https://www.cnblogs.com/dasuxd/p/18527692

第二十章 Flyweight 模式

public class BigcharFactory{//这里对使用到的内容进行了缓存private HashMap pool = new HashMap();//有则直接取,无则创建并保存到缓存。public synchronized BigChar getBigChar(char charname){BigChar bc = (BigChar) pool.get("" + charname);if(bc == null){bc = new BigChar(charname);pool.put("" + charname, bc);}return bc;}
}

第二十一章 proxy 模式

其实看看代码,我们会发现,直接使用 Printer 从代码上来讲区别不大但是正如这部分章节所讲的 避免浪费 。Proxy 模式保证了 Printer 对象只有在使用到的时候才初始化。在大型项目中,如果 Printer 是个很耗资源的类,可以起到节省资源的作用。

public class PrinterProxy implements Printable {private String name;private Printer real;private String className;public PrinterProxy() {}public PrinterProxy(String name, String className) {this.name = name;this.className = className;}public synchronized void setPrinterName(String name) {if (real != null) {real.setPrinterName(name);}this.name = name;}public String getPrinterName() {return name;}//当使用的时候才 初始化public void print(String string) {realize();real.print(string);}private synchronized void realize() {if (real == null) {try {real = (Printer) Class.forName(className).newInstance();real.setPrinterName(name);} catch (Exception e) {e.printStackTrace();}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑马PM-电商项目-订单管理

支付管理订单管理订单统计评价管理

记录一下从keil官网下载DFP(芯片支持包)的方法

1.打开官网 www.keil.arm.com2.点击右上角的下载按钮,进入下一页面3.选择MDK-ARM会进入到MDK下载页面。 这里我们不用下载MDK。4.选择左下角的芯片列表按钮5.选择我们使用的芯片(我这里使用的是STM32L051系列)6.然后选择DFP7.在右上角选择下载DFP文件

.NET 全能高效的 CMS 内容管理系统

前言 推荐一款强大的企业级工具 — SSCMS 内容管理系统。 SSCMS 为企业级客户设计,完全开源免费,适用于商业用途且无需支付任何产品或授权费用。 本文将详细介绍 SSCMS 系统的功能、用户界面及使用注意事项等内容。 项目介绍 SSCMS 基于 .NET Core 开发,无论是在 Windows、L…

NewStar CTF 2024 misc WP

decompress压缩包套娃,一直解到最后一层,将文件提取出来提示给出了一个正则,按照正则爆破密码,一共五位,第四位是数字 ^([a-z]){3}\d[a-z]$一共就五位数,直接ARCHPR爆破,得到密码 xtr4m,解压得到flagpleasingMusic题目描述中提到:一首歌可以好听到正反都好听根据提示(…

《图解设计模式》 第八部分 管理状态

第17章 Observer 模式public abstract class NumberGenerator{private ArrayList observerList = new ArrayList();/* 部分代码省略 *///加入基础类,当需要通知的时候通知public void addObserver(Observer observer){observerList.add(observer);}public void notifyObserver…

npmpnpm

npm与pnpm 磁盘效率:pnpm 更高效,节省磁盘空间。 安装速度:pnpm 通常更快,尤其是多项目环境下。 依赖管理:pnpm 更严格的依赖隔离,减少冲突。 Monorepo 支持:pnpm 支持更好,尤其是大型项目中。 Monorepo 支持是指在一个代码仓库(repository)中管理多个项目或软件包的…

洛谷题单指南-二叉堆与树状数组-P3378 【模板】堆

原题链接:https://www.luogu.com.cn/problem/P3378 题意解读:实现二叉堆。 解题思路: 二叉堆本质上一棵完全二叉树,根节点称为堆顶,根据特性不同分为有两种: 大根堆:所有父节点的值大于子节点,根节点最大 小根堆:所有父节点的值小于子节点,根节点最小 主要作用:动态…

冒泡排序与选择排序超详细讲解

冒泡排序与选择排序 冒泡排序 condition:输入5个数字,冒泡排序,逆序输出 #include<stdio.h> int main(){int userInput,tmp,i,j,arr[6],flag;flag = 0;for(int i=0;i<5;i++){scanf("%d",&userInput);arr[i] = userInput;}//依次输入五个数字for(int i…

【前端】六款高颜值登录页面

原创 吴旭东 无限大infinity第一款–简约风格HTML: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">…

【前端】六款高颜值注册界面

原创 吴旭东 无限大infinity 和昨天的一样,带来了六款注册界面,可复制源码(需要定制请加微信) 第一款–简约风格HTML: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport…

硬盘开机报错是什么原因引起的

硬盘开机报错可能由多种原因引起,以下是一些常见的原因及相应的解决方法: 一、硬件连接问题 数据线松动或损坏: 外部硬盘:检查USB线是否插紧,尝试更换USB线或连接到其他USB端口。 内部硬盘:检查数据线和电源线是否牢固连接,确保没有松动。 接口灰尘或损坏: 清洁主板上的…