这是我最近在写的一个账本小程序的最近的一个版本。最早的那个版本和这个的最大的区别在于没有MoneyContainer这个类,而Account和UserAccount这两个类直接继承自Money这个类。
而原始的设计的失败在于,把太多的动作封装进Money这个类中,除了其本身就有的一些类,比方说我把AddChild方法放入了Money中,那么我就多了很多不必要的代码。我必须要在没有对应Entry的策略类中,加入addChild方法。同时。同时,为了在代码中,为了区分Entry,多了很多比较。
原始问题最大的根源还是没有遵守住功能单一原则。为了代码的灵活,和抽象,把太多的东西封装到Money类中。这样最后反而导致了代码的更加不灵活,因为我必须在很多地方判断出,进来的参数是哪一种。不是哪一种。
看来把代码分开时很重要的啊。