java 类重复_java – 最好的方法来避免重复的代码,如果两个类扩展不同的类

“有利于构成遗产”是一件值得记住的事情.

开门打开门课.包括一个门作为A和B的成员.

沃拉,完成工作.

所以A.getDoor().close(). B.getDoor().open()等

如果您需要A和B的通用接口(因此您可以在某处使用),然后创建

interface HasDoor {

Door getDoor();

}

现在A和B可以扩展任何你喜欢的类并实现HasDoor.任何需要门的课程都可以接受HasDoor(或直接接受门对象),并打开,关闭等.

没有重复的代码,充分的灵活性.

如果您需要您的门将方法返回到A和B中,则将Door类作为抽象创建,并将其作为匿名内部类在A和B中实现.抽象方法将从门被调用,然后当这些方法被调用时,可以在A和B中进行任何处理.

例如A类:

class A implements HasDoor {

private Door door = new Door() {

@override void notifyDoorChanged(boolean closed) {

// The door is telling us its been opened or closed

}

}

@override

public Door getDoor() {

return door;

}

}

门是:

public abstract class Door {

boolean closed;

abstract notifyDoorChanged();

public void close() {

closed = true;

notifyDoorChanged(closed);

}

// etc

}

请注意,这与策略模式相似,但并不完全相同.策略模式有一个主对象,然后插入多种策略(即不同形式的门).这有一个门和多个其他对象使用相同类型的门,虽然你可以扩展它使用战略模式,并有很多门实施很容易.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值