java 多重继承,Java中多重继承的替代方案

I have created two beans

class BackPageBean{

String backPage = null;

:

:

:

}

class InformationMessageBean{

String informationMessage = null;

:

:

:

}

Now, if a class is backpage aware then it will extend backPageBean, or if it need to show some kind of message then it extends InformationMessageBean.

class BackPageAware extends backPageBean{

}

class InfoMessAware extends InformationMessageBean{

}

someFunction () {

if ( theObject instanceOf backPageBean ) {

prepareTheBackPage ( theObject.getBackPage() );

}

if ( theObject instanceOf InformationMessageBean ) {

showtheInformation ( theObject.getMessage() );

}

}

Now the problem is, if i want to have a bean which is both BackPageAware as well as InformationAware then, as we don't have multiple inheritance, what should be the approach?

解决方案

Just to clarify my comment.

Just like Darth Eru says you create

the two interfaces and the two default

implementations. When you have a bean

that needs both of the behaviours you

have that class implement the two

interfaces but you also create

variables of the default

implementations. This way you still

dont need to duplicate any code.

interface InfoMessAware {

String getMessage();

}

interface BackPageAware {

String getBackPage();

}

class DefaultInfoMessAware {

String getMessage() {

return "message";

}

}

class DefaultBackPageAware {

String getBackPage() {

return "backPage";

}

}

class MyBean implements InfoMessAware, BackPageAware {

private InfoMessAware messAware = new DefaultInfoMessAware();

private BackPageAware backPageAware = new DefaultBackPageAware();

String getMessage() {

return messAware.getMessage();

}

String getBackPage() {

return backPageAware.getBackPage();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值