C#语言
有200个类实现了a,b,c,x,y方法;
有150个类实现了a,b,c,y,z方法;
有100个类实现了a,b,c,x,z方法;父类应该实现什么方法,a、b、c还是a、b、c、x、y、z?
或者其他的好点子?

解决方案 »

  1.   

    基类实现共有的 abc,其他的交由子类实现,还可以考虑接口,或者使用其他设计模式
      

  2.   

    abc是由父类处理,xyz可以单独为类或接口,或者用装饰模式,策略模式
    我觉得做成接口最好
      

  3.   

    我的建议是继续分析:那150个类是不是都需要x,y方法,如果是,表明它们拥有足够多的共性,可以继承于同一类。该类继承实现了a、b、c方法的原始类,添加x、y方法。其余两种情况同样分析。这样最后可能得到3层类:实现了a,b,c方法的原始类;实现了x,y或y,z或x,z的第一层子类;以及继承于第一层子类的第二层子类——450个,好可怕。
      

  4.   

    抽象 和 new method 帮你完成需求。
      

  5.   

    如果是要彻底集中代码,或许应该把这些可能出现在子类里的方法全都写在基类里。class original
    {
        public int a();
        public int b();
        public int c();
        protected int ix();
        protected int iy();
        protected int iz();
    }然后在第一个类别子类里如此继承class child1 : original
        public int x()
        {
            return ix();
        }
        public int y()
        {
            return iy();
        }如此类推?
      

  6.   

    protected 的方法外部不可用的,第一层子类的目的是开放需要的方法。