我正在开发两种操作系统。每个都有BaseClass
的特定实现。我想抽象这些实现。我的想法是使用两个实现的接口,然后使用工厂模式返回特定于OS的类。这看起来类似于this。
但是,采用这种方法需要我在构建应用程序之前指定应使用哪种实现,例如通过一个常量变量保存操作系统的名称(链接答案中的platform
变量)。对我来说,这似乎是一个糟糕的设计选择。
还有另一种方法来定义要构建的操作系统吗?
答案 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")