自从几年前“共享自行车”出生以来,“共享经济”一词也被提升为天空,它逐渐渗透到我们日常生活的所有角落。从“共享自行车”到“共享的RVS”,我们不仅看到了市场需求的转变,而且还看到了人们对这一想法的尊重。
最终的分析,人们欣赏共享的概念无非是因为“共享”大大减少了不必要的资源消费,这将使生活负担不再像往常一样重。
“共享”也适用于软件系统的开发。在面向对象的编程过程中,有时会面临创建大量相同或相似对象实例的问题,但是创建太多对象会消耗许多系统资源将成为阻碍系统改进的瓶颈。上面提到的“共享概念”,我们可以在对象中提取相同的部分共享,从而可以大大节省系统资源。为什么不?
上面的设计概念在“软件体系结构和设计模型”中具有专有术语,称为“启蒙模式”。例如,数据库的连接池,程序的线程池等是发电模式的典型应用程序。
?为了使您更好地了解UML课程的后期图,我将帮助您了解元王朝的享受如何运作。
假设您在业余时间开发了游戏,并在编译游戏后将其发送给朋友进行测试。尽管您可以在计算机上平稳运行,但您的朋友在运行几分钟后会崩溃。在不足的内存容量中,他的计算机性能远低于您,因此很快就会出现问题。
游戏简介:玩家在地图上移动并互相射击,并且会在整个地图上行走大量子弹。
为什么小游戏会导致记忆力不足的问题?在调查后,发现记忆不足的脚跟颗粒系统与脚跟系统有关。每个粒子(子弹)由完整数据的独立对象组成。当游戏在猛烈的屏幕上战斗时,系统无法将其加载到剩余的剩余粒子中,从而导致系统崩溃。
但是,如果仔细观察,您会注意到颜色和精灵的两个成员的变量比其他变量要多得多。最糟糕的是:对于所有粒子对象,两个成员变量存储的数据几乎是完全相同(即所有子弹的颜色与精灵相同)。只有其他状态,例如坐标,移动向量和速度,因为这些成员变量将继续改变,并且代表了连续的变化在粒子的存在中。
那粒子对象中的连续数据(颜色和精灵)通常称为内部状态,只能读取但不能修改。外部状态反映在粒子对象中的坐标,移动向量和速度中。
建议不要将外部状态存储在Yuanyuan对象的享受中(征集对象仅存储内部状态),而是将外部状态传输到特殊方法的特殊方法作为参数,以便重复使用/在不同的情况下/在不同情况下,这将使内部状态的变体大量变体,并且将消耗的系统资源将减少。
我们称仅将内部状态存储为享受的对象。
回到这个游戏中,我们只需要从粒子类中提取外部状态即可将它们封装成一个类,以便将所有内部类封装为成员变量。这样,系统中的所有粒子都只需要使用相应的数量和较少的内存职业和更多的内存占用对象,以确保游戏继续正常运行(内存最多的内存消耗的成员变量已移至唯一的Xiangyuan对象),因为所需的内存具有所需的内存从优化之前的21GB更改为32MB,因此我不再需要担心由于内存不足而导致的系统崩溃!
我已经说了很多,您应该对Yuanyuan模式的享受有印象,并提到另外两个要点:
享受元素模式可以理解为缓存模式,轻巧模式,这是一种。
元素模式的享受放弃了保存每个对象的所有数据的方法,并使用共享技术有效地支持重复使用大量的优质粒子大小对象,并共享多个对象通常共享的相同状态,因此您可以在有限的内存容量中加载更多。
元王朝享受的本质是减少记忆消耗的缓存共享对象。它只是由大量类似对象引起的一种记忆消耗的一种优化,并且不需要过度使用。
享受以下角色:
享其中,这意味着共享内部状态;这意味着无法共享的外部状态,它以参数形式注入元素的相关方法。
更具体的元素模式
元素更普遍的享受
的为结构的完整性(并非所有字段都可以共享),还包含共享和非共享字段),但实际上我们可以将其集中在共享对象。
尽管可以共享网络设备,但分配给每个终端计算机的端口是不同的。因此,尽管多台计算机可以共享同一网络设备,但必须使用不同的端口。我们可以从网络设备中提取端口作为外部状态,然后在需要时将其设置。
共享网络设备(具有外部状态)
得享受相同的对象或相似对象,仅保存一部分,这可以大大减少内存中的对象数量,并减少系统中细粒径对象引起的压力。
外元素模式的外部状态相对独立,不会影响其内部状态,因此可以在不同的情况下共享享受的享受。
为了共享对象,需要某些无法共享的状态,这将增加程序的复杂性。
需要阅读外部状态需要时间,这意味着武士将牺牲执行速度以换取记忆。
建议在以下情况下使用应征模式:
享受元模式只是一个目的:最大程度地减少记忆消耗。
(1)当程序必须支持大量相同/相似对象并且没有足够的内存容量时,请使用启蒙模式。
启蒙模式在编辑软件中大量使用。如果文档中出现许多相同的图片,则只需创建一个图片对象即可。通过在应用程序中设置图片的位置,可以在不同位置的不同位置实现图片。多次重复显示。
Java定义为类中的类型。JVM中的字符串通常保存在字符串常数池中。Java将确保字符串在常数池中只有一个副本。
该类已修改,变量以文字卷的形式创建。JVM将在编译期间将字面的“ Hello World”放在字符串常量池中。当Java程序启动时,已将其加载到内存。
该字符串常数池的特征是只有一种类型。如果池中存在所需的文字卷,JVM将返回此字样的引用。
让我们首先看一个令人难以置信的代码:
为什么第一个和第二个?
抗复杂性后,发现它实际上就变成了。您可以知道该方法很奇怪,让我们检查一下源代码中该方法的实现!
中东元模式的关键源代码!
您可以看到预先创建和缓存的对象。当调用呼叫时,如果参数在之间,则将直接从缓存返回,否则将创建一个新对象。
(1)建议不要将外部状态存储在元王朝的享受中(享受内部状态的对象只能保存内部状态),而是将外部状态传递给特殊的元素对象方法取决于它作为参数。此图与“更多示例”部分中的类图结构一致,并且也是元素模式的相对常见的形而上学图。它直接传输到外部状态的参数。
(2)从更宏观的角度(即,从客户端的角度来看),外部状态也可以提取到方案中()。此图与“更具体的元素模式”的分类结构完全相同“ 多于。
在简单地享受元素模式中,可以共享元素的所有对象,也就是说,所有抽象元素的所有子类都可以共享,没有非共享特定的享受,并且它更接近我们通常的启蒙模式使用
结合一些“元王朝的享受”和“组合模式”可以形成元素模式的综合享受。这种复合元素对象无法共享,但是可以将它们分解为简单的元素模式,后者可以共享。
如果原始对象中的所有状态都是内部状态,则“启蒙模式”和“单个模式”相似,但是这两种模式不同:
如果您能理解这两个句子,那么恭喜您就可以掌握享受和单打模式!
?上一:“设计模式”?外观模式(立面)
?下一步:不断,请继续关注...
??好的代码无需解释。请注意“手钉设计模式”的列,并与我一起学习设计模式。您的代码可以像诗歌一样优雅!
?? / End /如果本文对您有所帮助,请单击“像”支持,您的支持是我最大的动力!