读书人

问一个设计模式的有关问题

发布时间: 2012-02-05 12:07:15 作者: rapoo

问一个设计模式的问题
我现在要做一个客户端的界面,现在分为汉化版,和英文版。
我想用一个接口,下属子类分别为 汉化版,英文版。在界面上用一个建来实现版本的切换。但是如果在加一个版本如日文版,则必须修改客户端的程序。
我想问的是用什么办法减小客户端的修改,我设计模式学的不深入,大牛们指导下

[解决办法]
用一个map不就搞定了。
map<国家语言, map<key, 文字> >
界面上的文字都用key,而不是真实的文字。
每次打开加载界面的时候用当前的国家和一个key取出来,再放到页面上就行了。

界面上凡是要安装文字的地方要自适应宽度。
[解决办法]
常用的一个办法是增加一个配置文件,ini、xml或者自定格式随意,采取key和实际内容对应的方式

然后在程序中读取配置文件,并在界面上显示固定key所对应的内容

不同的语言对应不同的配置文件,语言的选择和替换其实就是加载不同的配置文件并且刷新控件上的文字即可
[解决办法]
如果希望完全不对客户端做任何修改,可以把语言文件放置在特定的文件夹内
然后在程序加载或者下拉框触发事件中对该目录进行遍历,得到所支持的全部语言种类
当然,这其中为了程序的稳定性,最好对语言文件进行有效性检测

探讨
我还是不怎么明白。比如现在我做一个下拉框上面有中文和英文的切换,但如果这样做我,以后每开展一种语言,均要改下拉框。如果按map方式,如何选择key?而不增加对客户端的修改

[解决办法]
广义地说,这的确是个设计模式问题。
狭义地说,这不是一个设计模式的问题。

用配置文件是很好的解决办法。比如两个配置文件的内容:

cn.txt的内容:
a = "我爱你"

en.txt的内容:
a = "I love you"

参数的名字相同,在不同的配置文件中的内容却不一样。当用户选择使用中文的时候,程序就读取cn.txt中的内容,如果选择使用英文的时候,程序就读取en.txt中的内容
[解决办法]
楼主看下策略模式
[解决办法]
探讨

楼主看下策略模式

读书人网 >C++

热点推荐