如何根据操作系统动态继承?

时间:2018-10-23 11:51:53

标签: java inheritance cross-platform

我正在开发两种操作系统。每个都有BaseClass的特定实现。我想抽象这些实现。我的想法是使用两个实现的接口,然后使用工厂模式返回特定于OS的类。这看起来类似于this

但是,采用这种方法需要我在构建应用程序之前指定应使用哪种实现,例如通过一个常量变量保存操作系统的名称(链接答案中的platform变量)。对我来说,这似乎是一个糟糕的设计选择。 还有另一种方法来定义要构建的操作系统吗?

2 个答案:

答案 0 :(得分:2)

你没有。

这不是Java的工作方式。 Java程序不是为特定的目标系统编译的,它们应该是可移植的并且可以在所有系统上工作。参见Possible to run JAR file on any OS?

如果您需要执行某些特定于操作系统的操作,则可以使用系统属性来找出程序在运行时在哪个OS上运行。然后,您可以使用此信息在某种工厂中选择适当的实现,但这是运行时的决定。

找出操作系统的一些方法:How do I programmatically determine operating system in Java?

答案 1 :(得分:0)

java将操作系统名称存储在其标准属性中,因此以下调用应为您提供操作系统名称:

System.getProperty("os.name")