Java货币转换器秉承OO(面向对象)原则

标签 java oop design-patterns maintainability object-oriented-analysis

命令行货币转换器应用程序,提示用户输入 源货币、源货币代码和目标货币代码,例如

C:\workspace> java CurrencyConverter 100.50 EUR GBP

应用程序返回源金额转换为目标货币的值 例如对于上面的输入,它返回

100.50 EUR = 86.33 GBP

显示转换后的值后,程序退出。

可用汇率(基于英镑)位于逗号分隔值文件中。该文件的格式是 国家、名称、代码、费率 例如

United Arab Emirates, Dirhams, AED, 7.2104
Australia, Dollars, AUD, 1.51239
Bosnia and Herzegovina, Convertible Marka, BAM, 2.60565
Bulgaria, Leva, BGN, 2.60948

我有一个 java 文件可以完成这些事情,但是如何将其转换为设计良好、可扩展且可维护的形式,并遵循良好的 OO 原则?

我是否应该考虑任何设计模式,如果是,需要哪些不同类型的对象/接口(interface)以及它们之间的关系?

最佳答案

我想到的一些设计方面

  • 读取 CSV 文件:创建一个 ExchangeRateReader 工厂,以便 各种格式的汇率文件可以用作输入。

  • (Objectify) ExchangeRate POJO 对象包含代码、名称、国家/地区和汇率

  • 具体工厂类生成从 CSV 读取的 ExchangeRate 对象 文件

  • ReaderType使用Enum:CVS、TEST、EXCEL//工厂依赖 创建适当的实例(具体工厂实例)

关于Java货币转换器秉承OO(面向对象)原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964415/

相关文章:

java - 这是全局变量的可接受的使用吗?

java - Java 中 'event' 驱动的内容通知服务的设计模式是什么?

java - Infinispan 8.1 Java 版本——文档与现实

java - Spring /hibernate : how to get Configuration from LocalContainerEntityManagerFactoryBean

java - 如何从基类实例中找出子类?

oop - 理解 Dart 中的 'implements' 和 'with'

java - Spring Bean 和 Hibernate 表

design-patterns - 什么情况下应该有人 "try...catch"?这适用于图书馆吗?

java - Java 9 中创建了多少个未命名的模块?

java - Selenium Firefox 57 无法连接到二进制/本地主机