Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 我应该使用什么图案/名称?_Actionscript 3_Design Patterns_Naming Conventions_Singleton - Fatal编程技术网

Actionscript 3 我应该使用什么图案/名称?

Actionscript 3 我应该使用什么图案/名称?,actionscript-3,design-patterns,naming-conventions,singleton,Actionscript 3,Design Patterns,Naming Conventions,Singleton,我创建了一个处理项目文本的单例类。这样的单例类的合适名称是什么 短信管理员? 文本处理程序? 文本控制器? 这些名字的意思有区别吗 更新: 该类将项目文本存储为xml,并具有返回正确文本的方法 function getText(uid : String) : String 我相信控制器是为MVC模型“保留”的,但我可能错了。TextHandler和TextManager可能更好,但至少在我工作的地方,服务/类中的“Manager”通常是不被鼓励的,因为假设每个类“管理”的东西可能只是特定于区域

我创建了一个处理项目文本的单例类。这样的单例类的合适名称是什么

短信管理员? 文本处理程序? 文本控制器? 这些名字的意思有区别吗

更新: 该类将项目文本存储为xml,并具有返回正确文本的方法

function getText(uid : String) : String

我相信控制器是为MVC模型“保留”的,但我可能错了。TextHandler和TextManager可能更好,但至少在我工作的地方,服务/类中的“Manager”通常是不被鼓励的,因为假设每个类“管理”的东西可能只是特定于区域性的


我会在这三个人中投票给TextHandler。它也可能稍微取决于您的编程语言。

我认为控制器是为MVC模型“保留”的,但我可能错了。TextHandler和TextManager可能更好,但至少在我工作的地方,服务/类中的“Manager”通常是不被鼓励的,因为假设每个类“管理”的东西可能只是特定于区域性的


我会在这三个人中投票给TextHandler。它也可能稍微取决于您的编程语言。

我通常称之为这样的东西

文本实用程序

文本助手


“handler”的问题在于它意味着某种事件处理。与“Controller”相同,它在不同的上下文中有不同的含义。

我通常称之为这样的东西

文本实用程序

文本助手


“handler”的问题在于它意味着某种事件处理。与“控制器”相同,它在不同的上下文中有不同的含义。

TextCache?听起来你只是用它来存储和检索数据…

TextCache?听起来你只是用它来存储和检索数据…

你提出的三个名字都可以用同样的方式解释。有些人更喜欢处理器,而有些人可能会说控制器。。。这确实是一个语义问题。无论你选择采用什么惯例,都要保持一致。不过,您应该捕获的一个常见概念是,您所描述的类没有做任何事情。它应该只负责授权,因为在经典的MVC范式中,管理者对员工和控制者都是这样做的。

您提议的三个名字都可以用相同的方式解释。有些人更喜欢处理器,而有些人可能会说控制器。。。这确实是一个语义问题。无论你选择采用什么惯例,都要保持一致。不过,您应该捕获的一个常见概念是,您所描述的类没有做任何事情。它应该只负责授权,因为在经典的MVC范例中,这是管理者对员工和控制者所做的。

为什么不:ProjectNameText

为什么不:ProjectNameText


因为我通常在事件/消息处理上下文中有处理程序。控制器的动作和MVC的东西,我会去一些不同的东西:

TextResources.getkey I18n.getkey,如果您的类实际上用于国际化
我通常为类保留帮助程序,这些类允许简单地将一些数据转换为视图中使用的内容。

因为我通常在事件/消息处理上下文中使用Handler。控制器的动作和MVC的东西,我会去一些不同的东西:

TextResources.getkey I18n.getkey,如果您的类实际上用于国际化
我通常为类保留帮助程序,这些类允许简单地将一些数据转换为视图中使用的内容。

我想它不涉及添加/删除/…->管理文本可能只是加载,所以它不是真正的管理器

它也不控制文本,而您只能从…,如果…,则为该键返回另一个值

这门课为你提供课文

我想这是某种本地化的文本提供者,对吗


那么为什么不称之为LocalizedTextProvider呢?

我想它不涉及添加/删除/…->管理文本可能只是加载,所以它不是真正的管理器

它也不控制文本,而您只能从…,如果…,则为该键返回另一个值

这门课为你提供课文

我想这是某种本地化的文本提供者,对吗


那你为什么不叫它LocalizedTextProvider呢?

对我来说,这听起来像是一个服务或存储库

TextService还是TextRepository?文本模型

但让我退一步。。。单例模式是访问类似内容的一种非常糟糕的方式。如果你想知道我在说什么的话,只需要谷歌的单例模式问题。另外,在AS3中,您没有私有构造函数,因此无法以纯粹的方式实现单例模式

相反,我真的更喜欢通过控制反转来合成IoC容器。外面有很多 动作脚本。它们可以非常轻巧,但它们以非常优雅的方式将组件解耦

很抱歉在这里插入我的想法。。。ymmv:

编辑-关于消除单例模式的更多信息

我已经在你的代码中写了几个。这篇文章是为C编写的,但所有的原则都适用。在那篇文章中,我没有明确谈论IoC容器

这是一篇关于这个问题的很好的文章。此外,有几个框架为您提供了IoC功能:


对我来说,这听起来像是一个服务或存储库

TextService还是TextRepository?文本模型

但让我退一步。。。单例模式是访问类似内容的一种非常糟糕的方式。如果你想知道我在说什么的话,只需要谷歌的单例模式问题。另外,在AS3中,您没有私有构造函数,因此无法以纯粹的方式实现单例模式

相反,我真的更喜欢通过控制反转来合成IoC容器。有很多是为ActionScript准备的。它们可以非常轻巧,但它们以非常优雅的方式将组件解耦

很抱歉在这里插入我的想法。。。ymmv:

编辑-关于消除单例模式的更多信息

我已经在你的代码中写了几个。这篇文章是为C编写的,但所有的原则都适用。在那篇文章中,我没有明确谈论IoC容器

这是一篇关于这个问题的很好的文章。此外,有几个框架为您提供了IoC功能:



我想知道为什么我应该在使用其他名称之前使用Handler。TextController将更多地位于MVC空间中,Handler将指示有事件处理程序具体做什么?它基本上是一个以xml格式存储项目文本的类。但是它也有一些方法,比如getTextuid:String:String。我想知道为什么我应该在其他名称之前使用Handler。TextController将更多地位于MVC空间中,Handler将指示存在事件处理程序具体做什么?它基本上是一个以xml格式存储项目文本的类。但是它也有一些方法,比如getTextuid:String:StringProgramming language:Actionscript 3是的,我相信它仍然很好。编程语言:Actionscript 3是的,我相信它仍然很好。谢谢。我一直在想TextModel。我真的很想看到一个没有单例实现但可以从多个类轻松访问的示例。我认为您需要进一步了解依赖注入和控制反转的概念。它们的存在就是为了满足你的要求。它们允许您组合对象,而无需像Singleton模式那样显式地耦合它们。我编辑了我的文章,给出了一些消除单例模式的链接,但仍然允许多个类访问您的数据。祝你好运:谢谢。我一直在想TextModel。我真的很想看到一个没有单例实现但可以从多个类轻松访问的示例。我认为您需要进一步了解依赖注入和控制反转的概念。它们的存在就是为了满足你的要求。它们允许您组合对象,而无需像Singleton模式那样显式地耦合它们。我编辑了我的文章,给出了一些消除单例模式的链接,但仍然允许多个类访问您的数据。祝你好运:谢谢你的回答。该类不是特定于项目的。它不加载任何内容。它存储项目文本以便于访问。谢谢您的回答。该类不是特定于项目的。它不加载任何内容。它存储项目文本以便于访问。
FooTexts.getInstance().getText('hello_world');