基类派生类的设计问题

由于业务需求,现有

基类A,派生类A1、A2
基类B,派生类B1、B2

目前是基类A持有基类B,但是业务上需要A1持有B1,A2持有B2,怎样设计会比较好?

谢谢


侃侃无极
浏览 529回答 6
6回答

摇曳的蔷薇

根据业务功能拆分出接口来

尚方宝剑之说

给你一个参考方案,另外也可以考虑用泛型来处理。不管 Java 的泛型我不太熟,等其他高人了class B {}class B1 extends B {}class B2 extends B {}class A {    B data;    B getData() {        return data;    }    void setData(B b) {        data = b;    }}class A1 extends A {    B1 data;    B1 getData() {        return (B1) super.getData();    }    void setData(B1 b) {        super.setData(b);    }    void setData(B b) {        if (!(b instanceof B1)) {            throw new ClassCastException();        }        super.setData(b);    }}

婷婷同学_

这个采用泛型可以很好地解决问题class A<T extends B> {&nbsp; &nbsp; private T b;&nbsp; &nbsp; public T getB() {&nbsp; &nbsp; &nbsp; &nbsp; return b;&nbsp; &nbsp; }}class B {&nbsp; &nbsp;&nbsp;}class A1 extends A<B1>{&nbsp; &nbsp;&nbsp;}class B1 extends B{}class A2 extends A<B2>{}class B2 extends B{}

蛊毒传说

不知道这个是不是你要的:public class B {}public class B1 extends B {}public class B2 extends B {}public class A <T extends B> {&nbsp; &nbsp; private T data;&nbsp; &nbsp; public T getData(){ return data;}&nbsp; &nbsp; public void setData(T data) {&nbsp; &nbsp; &nbsp; &nbsp; this.data = data;&nbsp; &nbsp; }}public class Main {&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; A<B1> a1 = new A<B1>();&nbsp; &nbsp; &nbsp; &nbsp; A<B2> a2 = new A<B2>();&nbsp; &nbsp; &nbsp; &nbsp; a1.setData(new B1());&nbsp; &nbsp; &nbsp; &nbsp; a2.setData(new B2());&nbsp; &nbsp; &nbsp; &nbsp; // .....&nbsp; &nbsp; }}使用泛型,A这边不需要继承结构。

叮当猫咪

按楼上的范型吧,不过也要注意范型的问题~~
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java