热门关键词:

软件开发的轻量化设计模式

添加时间:2019-09-30 16:05:08

来源:

浏览:

Flyweight模式是结构设计模式之一,因为该模式提供了减少对象数量的方式,从而改善了应用程序所需的对象结构。当我们需要创建大量相似对象(例如10 5)时,将使用Flyweight模式。轻量级物体的一个重要特征是它们是 不可变的。这意味着一旦构建它们便无法对其进行修改。


为什么我们要关心程序中的对象数量?


更少的对象数量减少了内存使用,并且设法使我们远离与内存相关的错误,例如java.lang.OutOfMemoryError。

尽管用Java创建对象确实非常快,但是我们仍然可以通过共享对象来减少程序的执行时间。


在Flyweight模式中,我们使用一个HashMap来存储对已创建对象的引用,每个对象都与一个键相关联。现在,当客户想要创建一个对象时,他只需要传递与之关联的密钥即可,如果已经创建了该对象,我们只需获取对该对象的引用,否则它将创建一个新对象,然后将其返回给客户。


内在和外在状态


为了理解内部和外部状态,让我们考虑一个示例。


假设在文本编辑器中,当我们输入字符时,创建了Character类的对象,Character类的属性为{name,font,size}。我们不需要每次客户输入字符时都创建对象,因为字母“ B”与另一个“ B”没有区别。如果客户再次键入“ B”,我们将简单地返回之前已经创建的对象。现在,所有这些都是固有状态(名称,字体,大小),因为它们彼此相似,因此可以在不同对象之间共享。


现在,我们向Character类添加更多属性,它们是行和列。它们指定字符在文档中的位置。现在,即使对于相同的字符,这些属性也不会相似,因为没有两个字符在文档中具有相同的位置,这些状态被称为外部状态,并且不能在对象之间共享。


实施:我们实行恐怖分子的创建和反恐怖分子在游戏反恐精英。因此,我们有2类一个用于Ť errorist(Ť)以及其他用于Ç ounter Ť errorist(CT)。每当玩家要求武器时,我们都会将其分配给他。在任务中,恐怖分子的任务是植入炸弹,而反恐怖分子则必须扩散炸弹。


为什么在本例中使用Flyweight设计模式?这里我们使用飞行重量设计模式,因为这里我们需要减少玩家的物体数量。现在我们有n个玩家在玩CS 1.6,如果不遵循飞行重量设计模式,那么我们将不得不创建n个对象,每个对象一个。但是现在我们只需要为恐怖分子创建两个对象,为反恐怖分子创建另一个对象,那么我们将在需要时一次又一次地重复使用。


内部状态:这里的“任务”是两种类型玩家的内部状态,因为对于T / CT总是如此。我们可以有一些其他状态,例如它们的颜色或任何其他属性,这些属性对于它们各自的恐怖分子/反恐怖分子类别中的所有恐怖分子/反恐怖分子都是相似的。


外部状态:武器是外部状态,因为每个玩家都可以携带他/她选择的任何武器。客户端需要将武器作为参数传递。


用户名 Name
评论 Comment

软件开发  相关内容

——
30

2019-09

软件开发的轻量化设计模式

Flyweight模式是结构设计模式之一,因为该模式提供了减少对象数量的方式,从而改善了应用程序所需的对象结构。当我们需要创建大量相似对象(例如10 5)时,将使用Flyweight模式。轻量级物体的一个重要特征是它们是 不可变的。这意味着一旦构建它们便无法对其进行修改。为什么我… [了解更多]

30

2019-09

某石油集团油气田公司信息报送系统

实现了公司信息报送系统的稳定高效运行;满足各二级单位和三级单位对信息报送平台的使用需求,有效提高了工作效率。主要功能有:用户基本信息管理、角色权限管理,部门管理,报送栏目管理,图片作者和文字作者管理,公告管理,菜单管理,配置管理、报送信息管理,审阅人权限设置,信息搜索,信息审核、… [了解更多]

05

2019-09

奇怪的重复模板模式(CRTP)

通过奇怪的重复模板模式(CRTP)可以完全避免使用VPtr和VTable。CRTP是C ++中的一种设计模式,其中类X派生自使用X本身作为模板参数的类模板实例化。更一般地,它被称为F结合多态性。filter_none编辑play_arrowbrightness_4// Image… [了解更多]

05

2019-09

软件设计奇怪的重复模板模式(CRTP)

建议将虚函数和运行时多态性作为先决条件。下面是一个演示运行时多态性的示例程序。filter_none编辑play_arrowbrightness_4// A simple C++ program to demonstrate run-time// polymorphism#inc…… [了解更多]

02

2019-08

app开发公司的软件设计的迭代器模式

迭代器模式是一种相对简单且经常使用的设计模式。每种语言都有很多数据结构/集合。每个集合都必须提供一个迭代器,让迭代器遍历其对象。但是,在执行此操作时,应确保它不会公开其实现。假设我们正在构建一个需要我们维护通知列表的应用程序。最终,您的代码的某些部分将需要迭代所有通知。如果我们将… [了解更多]

关注

成都软件开发

  • 地 址:成都市人民南路四段成科西路三号 863国家孵化园
  • 电 话:18215 660330
  • 手机:18215 660330
  • 传 真:18215 660330
  • 邮 箱:179001057@qq.com
  • 邮政编码:610000