一个项目设计中的小小疑惑

看了不少关于设计之类的书,还有Java的源代码与类库设计,知道系统的顶层肯定是接口,接下来是抽象类,然后再是实现类;实

现类从抽象类派生,相当于也实现了接口,因为接口定义规范,抽象类定义共享的字段与方法;
我也一直这么做,发现也合情合理,因为我的每个领域对象都有些相同属性。
比方现在有个卡接口,有职工卡、会员卡、学员卡、其中会员卡又分为充值卡,时效卡等等,
他们都属于卡对象的,有着相同的属性,我把这些属性封装成了一个对象,算是领域实体对象(DomainModel),不知道这个名词是否合理。

这样所有卡的抽象类就有了(DomainModel)这个字段,子类可以重用。
随着业务需求的不断变化,这个领域实体对象需要保存的字段逐渐增多,并且是不同的卡类型需要加的字段可能不一样;
比如职工卡可能需要记录职工的入职时间,充值卡需要记录当前余额等等;
我就不停的往里面加,最后不经意的发现一个小小的DomainModel实体类,有500多行代码,更要命的是不用的子类都共享同样的

DomainModel,职工卡也间接的具有了余额这个字段,虽然它不可能用到此字段。但总觉得这个位置有点坏味道,难道每个子类都实

现自己独有DomainModel?这个工作量估计会增大,再说这么多卡类,他们的DomainModel字段中至少7成一样,不复用又感觉亏了。
不知道各位大侠有什么比较好的设计没有,指点一二...在下不胜感激!


语言是平面的,图形是立体的,贴个UML图可能更能准确表达你的意思。