刚学java不久,写了一个简单的计算器顺便尝试一下面向对象的设计(说实话写了一半有点不想写了,不过写写停停还是写完了),发上来吧。
[img]http://dl.iteye.com/upload/attachment/217237/e4c6e4ae-b055-30e5-910b-ad2563baafdf.jpg[/img]
各种进制继承CalNumber类,如BinNum,DecNum
[img]http://dl.iteye.com/upload/attachment/217239/0c0fb7eb-9166-300e-918f-6efd9352bb84.jpg[/img]
计算方法继承CalMethod类,计算方法包括加减乘除等
[img]http://dl.iteye.com/upload/attachment/217241/242932b0-070c-34cf-8797-927dd947e3ab.jpg[/img]
CalStep类用于实现计算逻辑
[img]http://dl.iteye.com/upload/attachment/217243/aab319da-87ab-3c47-9a38-4ab88e9ad1db.jpg[/img]
CalControl用于控制计算器整体状态,如转换进制
[img]http://dl.iteye.com/upload/attachment/217245/19a59372-5e4a-3ef2-bfd6-93984e397d09.jpg[/img]
CalFrame用来实现其界面
第一次这么写程序,最后发现不少问题,如小数的处理,设计模式上也有些限欠缺。不过先这样吧。
总结一下写这个小程序的经验教训:
1、接口方法并不是越多越好,应力求精简。
2、每一层应尽量将自己负责的部分“做好”,不要将问题遗留给下一层。
3、对于有状态转移的的系统尽量使用状态模式。
[img]http://dl.iteye.com/upload/attachment/217237/e4c6e4ae-b055-30e5-910b-ad2563baafdf.jpg[/img]
各种进制继承CalNumber类,如BinNum,DecNum
[img]http://dl.iteye.com/upload/attachment/217239/0c0fb7eb-9166-300e-918f-6efd9352bb84.jpg[/img]
计算方法继承CalMethod类,计算方法包括加减乘除等
[img]http://dl.iteye.com/upload/attachment/217241/242932b0-070c-34cf-8797-927dd947e3ab.jpg[/img]
CalStep类用于实现计算逻辑
[img]http://dl.iteye.com/upload/attachment/217243/aab319da-87ab-3c47-9a38-4ab88e9ad1db.jpg[/img]
CalControl用于控制计算器整体状态,如转换进制
[img]http://dl.iteye.com/upload/attachment/217245/19a59372-5e4a-3ef2-bfd6-93984e397d09.jpg[/img]
CalFrame用来实现其界面
第一次这么写程序,最后发现不少问题,如小数的处理,设计模式上也有些限欠缺。不过先这样吧。
总结一下写这个小程序的经验教训:
1、接口方法并不是越多越好,应力求精简。
2、每一层应尽量将自己负责的部分“做好”,不要将问题遗留给下一层。
3、对于有状态转移的的系统尽量使用状态模式。