有关接口的类实现的问题

时间:2011-09-11 20:46:41

标签: actionscript-3 oop design-patterns factory-pattern

我创建了以下用于共享图像的类。他们实现了一个接口,但我需要一种通过用户交互在它们之间切换的方法。我已经通过以下方式完成了它:

enter image description here

如您所见,服务1和服务2实现 iSharingServices ,并继承自 PolimorphSharing

PolimorphSharing是一个简单的抽象类,它实现了我希望从服务1和服务2公开的方法。然后,这些方法将在服务1和服务2上被覆盖。

因为我需要一种在运行时切换服务的方法,所以我创建了一个继承自PolimorphSharing的网关类。然后我可以通过以下方式调用它:

private var sharingService:PolimorphSharing = new SharingServicesGW('svc1').createService();

这一切都完美无瑕,我现在可以在服务之间切换,没有任何问题。但是,我觉得它有些不对劲,所以我想请大家就如何更好地实现这一点提出一些建议。

此处的任何意见将不胜感激。我觉得我很难在这里实施工厂模式

更新 只需添加更多洞察力。基本上这里的想法是我的客户能够上传各种不同的公共共享服务的图像,如imageshack,imgur等。我希望我的客户能够选择要发布图像的服务(因此“通过用户互动在他们之间切换”问题的一点点。

执行上传位的方法是requestShareImage(), processResults()只需将返回的内容转换为唯一格式,因此我的客户端可以以相同的方式读取它。 getObject()是我的访问者,onIOError将处理任何公共API的异常

提前全部谢谢,

1 个答案:

答案 0 :(得分:1)

SharingServicesGW 工厂。然而,没有必要 - 它不应该 - 从PolimorphSharing继承。你也有点倾斜。客户端应该使用接口类型的对象,而不是抽象类型。 您的界面应该定义公共API,而不是您的抽象基类。事实上,AS3接口只能定义公共成员,而伪抽象类可以强制实施受保护的成员。

- 编辑 -

这是我将如何做的UML图 enter image description here