java设计中的一些问题_在 Java / 架构、设计 中的问题

在 Java / 架构、设计

依赖于抽象而不依赖于具体实现。

如果依赖于抽象类型,当这个具体类型不用了,改为另一个类型,客户端就完全不知道具体类型已经有所变化。

我决的如果具体类已经变了,客户端也应该变化,回为java在instance时用的是new关键字。

例如:

变化前:

public   interface   IA   {

}

public   B   implements   IA   {

}

//clinet

IA   ia   =   new   B();

变化后:

public   C   implements   IA   {

}

//clinet

IA   ia   =   new   C();   //这里客户端也变化了。

请大家解释一下?

1.在这里,客户端只有创建工作需要显式的与对象有关,而其它的操作都只与接口有关。当用不同的对象实现某个接口时,除了对象创建外,其它的代码不需要动,而创建的代码是最直接的。

如果真要强调客户端的透明性,用抽象工厂模式就可以不用知道任何要创建对象的细节,只需要用相应的参数传给工厂对象。

在实际应用中,不可能如此严格地遵循原则。把所有的原则都遵循了,什么软件都做不成

2.很多时候并不是直接用new来得到新对象,可能是一个方法返回的结果呢?     比如:     IA   ia   =   anotherObject.getTheImplentationOfA(someParameter);         想想在使用java.util包中的一些对象(Collection,Set)时,获取Iterator的情形。再想想如果java.util支持多种Iterator的实现,你的客户代码怎么变呢?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值