多媒体播放器有设计模式吗?我一直在互联网上搜索,但我发现没有与玩家架构有关的模式。我看了一些玩家(MPlayer VLC)的来源,但我无法识别玩家使用的任何模式。我想构建一个播放器,其中支持的不同媒体在不同的模块中实现。播放器将是一个独特的进程(服务器),应由大量其他客户端进程使用,客户端将请求播放器播放媒体,然后该请求将由播放器处理。
答案 0 :(得分:5)
我不知道它是否只是我对那种导致绝对无意义行为(个人意见洞察力)的设计模式巨型的负面思考,但是:
你不应该问自己“什么样的设计模式适合我想要编码的XYZ类型的应用程序”。
这是绝对错误的做事方式。设计模式不是您分配给您编码的程序的乐高积木。模式自然会在特定领域发展。
如果你了解模式,它可能会帮助你看到什么是一个好的解决方案。但是,为了它,你绝不会把一些模式包装在一起。
mmplayer的模式确实是一个糟糕的问题。您可能会说相同的任务需要不同的编解码器,这可能会在THAT SPECIFIC DOMAIN的工厂模式中发展。您可能需要一些具有一定容错功能的流功能,这可能会在漏桶计数器中发展。
您可以重新考虑您的问题。我认为这根本没有意义。
真的,没有冒犯!但我认为你在设计决策意义上走向了错误的方向。以不同的方式处理它可能是最好的。
答案 1 :(得分:1)
媒体播放器是一个完整的应用程序。对于整个应用程序,没有“设计模式”这样的东西。
然而,一些软件系列(比如视频游戏)几乎总是拥有一些共同的架构属性。但是我们处于应用程序架构级别,而不是设计模式级别,通常被认为是代码级别的概念。
我担心媒体播放器类型的应用程序没有参考架构,但是,您可以依赖许多不同且不太具体的架构原则。例如,设计复合应用程序是一种非常普遍的做法。你会发现很多关于如何创建可以加载模块或编解码器等的插件系统的专门文献。
答案 2 :(得分:0)
您可以查看Audacity架构,并在同一个域中查看良好的SW设计:http://www.aosabook.org/en/audacity.html
Audacity是一款流行的录音机和音频编辑器。这是一个能力 程序虽然仍然易于使用。大多数用户都在 Windows,但相同的Audacity源代码编译为在Linux和Linux上运行 Mac也是。