Java模式设计之多态模式与多语言支持 - 编程入门网
但是单态模式的精神是允许有限个实例,并不是仅允许一个实例;这种最多只允许有限多个实例,并向整个JVM提供自己实例的类叫做多态类(Multiton),这种模式叫做多态模式(Multiton Pattern),请参见下面的结构图。 图4、多态类的结构图。 本章就需要用多态模式来实现资源对象,需要构造出能提供有限个实例,每个实例有各不相同的属性(即Locale代码)。 Java模式设计之多态模式与多语言支持(3)时间:2010-12-13有上限多态类 一个实例数目有上限的多态类已经把实例的上限当作逻辑的一部份建造到了多态类的内部;这种多态模式叫做有上限多态模式。 比如每一麻将牌局都需要两个色子,因此色子就应当是双态类。这里就以这个系统为例,说明多态模式的结构。 图5、色子的类图。 下面就是多态类Die(色子)的源代码:
代码清单3、多态类的源代码。 在多态类Die中,使用了饿汉方式创建了两个Die的实例。根据静态工厂方法的参数,工厂方法返还两个事例中的一个。Die对象的dice()方法代表掷色子,这个方法会返还一个在1到6之间的随机数,相当于色子的点数。
代码清单4、客户端的源代码。 由于有上限的多态类对实例的数目有上限,因此有上限的多态类在这个上限等于1时,多态类就回到了单态类。因此多态类是单态类的推广,而单态类是多态类的特殊情况。 一个有上限的多态类可以使用静态变量储存所有的实例;特别是在实例数目不多的时候,可以使用一个个的静态变量储存一个个的实例。在数目较多的时候,就需要使用静态聚集储存这些事例。 Java模式设计之多态模式与多语言支持(4)时间:2010-12-13无上限多态模式 多态类的实例数目并不需要有上限[CAMP02];实例数目没有上限的多态模式就叫做无上限多态模式。 由于没有上限的多态类对实例的数目是没有限制的,因此虽然这种多态模式是单态模式的推广,但是这种多态类并不一定能够回到单态类。 由于事先不知道要创建多少个实例,因此必然是使用聚集管理所有的实例。本章要讨论的多语言支持方案就需要应用到多态模式,关于没有上限的多态模式的实现可以参见下面的讨论。 图6、没有上限的多态模式(左)和有上限的多态模式(右)的类图。其中N就是实例数目的上限。 有状态的和没有状态的多态类 如同单态类可以分成 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |