【问题标题】:AdModule Architecture using Abstract Factory Pattern使用抽象工厂模式的 AdModule 架构
【发布时间】:2016-02-05 00:13:22
【问题描述】:

我将其作为 Unity 中的示例项目。 AdManager 是一个单一的 Monobehaviour,所有其他实体都是 C# 文件。我想讨论这个模块的架构。该图不完整,因为该工具的免费版本仅支持这么多。我的基本要求很简单开发一个广告模块,在多个平台上展示广告,满足多个广告网络的需求。可以轻松集成到任何项目中。

我正在考虑如何实现它:客户端仅与 AdManager 交互,它将使用 AbstractFactory 模式提供一个 PlatformAdController。 AdNetworkController 将实现其对应的 AdNetwork。然后根据需要可以在一个PlatformAdController中存在多个(Waterfall)AdNetworkController。

我的方向正确吗?

接口的好名字是什么?

如何实现较低的(AdNetwork)层,即是否需要接口/基类?

【问题讨论】:

  • 您正在构建一个广告网络中介工具,例如MoPub。只是说,以防你不知道他们。干杯。
  • 我知道 mopub 和 fyber .. 试试 fyber 更好:) 我正在为 IOS 和 Android 实现 fyber。您可以说 AdMediator 也将充当 UML 图中的 Wrapped AdNetwork。

标签: c# design-patterns unity3d architecture


【解决方案1】:

Unity 具有构建平台指令。在编译时使用它们以获得更好的性能。在这里阅读更多:http://docs.unity3d.com/Manual/PlatformDependentCompilation.html

您的方法没问题,但如果某些广告控制器需要额外的操作(例如更新其状态或其他内容),您必须向接口添加新方法,这将不会与其他 100500 实现一起使用。您还可以创建基类 AdsBase : IAds 并制作空的虚拟方法存根,以便在不需要它们的类中不覆盖它们中的每一个

【讨论】:

  • 我想我在这里使用工厂来解耦你在一个文件中遇到的混乱与平台指令。当然,生成工厂对象的类将使用这些平台指令来生成 PlatformAdController。关于第二部分。是的你是对的。我可以使用基类而不是接口来制作工厂。但是抽象工厂不能只有抽象方法,通过改变它我们违反了它。创建 PlatformAdControllers/Factory 对象的类的好名称是什么,例如工厂生产者?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多