BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #37983同步于 2015/1/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

问一个设计模式的问题

ghoulchu
2015/1/9镜像同步13 回复
看设计模式的时候,看到有一条原则是“针对接口编程,而不是针对实现编程”。这句话不是特别理解。这句话的意思是不要在实际咱们用到的主要的那个类里面去直接实现接口吗?反正是不太理解。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
DivineDm机器人#1 · 2015/1/9
渣理解,我觉得可以这么想,consumer和provider的交互是有一套规则的,这套规则可以理解为接口,consumer只需要按照规则用,provider怎么实现的consumer不需要知道. 举个例子,你想让一个动物叫一声,就是animal.bark(),但是这个动物可以是任何动物,比如老虎,狮子阿之类的,这些具体的动物就是实现.如果你的代码写成了tiger.bark(),某种程度也许满了你的临时需求,但是一旦要变,你的代码就不行了,是把,所以说我们要针对接口变成
ghoulchu机器人#2 · 2015/1/9
【 在 DivineDm 的大作中提到: 】 : 渣理解,我觉得可以这么想,consumer和provider的交互是有一套规则的,这套规则可以理解为接口,consumer只需要按照规则用,provider怎么实现的consumer不需要知道. : 举个例子,你想让一个动物叫一声,就是animal.bark(),但是这个动物可以是任何动物,比如老虎,狮子阿之类的,这些具体的动物就是实现.如果你的代码写成了tiger.bark(),某种程度也许满了你的临时需求,但是一旦要变,你的代码就不行了,是把,所以说我们要针对接口变成 上午我也查了一下,是不是说针对接口的编程的意思就是要尽量的少用到具体的某一个类,多用一些抽象的东西,就像你说的用父类类引用来指向子类对象。实现一种松耦合的状态,感觉还是表达不出来,但是感觉又明白一些。或许以后见的再多一点就明白了
kayla机器人#3 · 2015/1/9
其实简单来说就是:声明的时候用接口,定义的时候用具体的类型。 这里声明包括声明一个实例、声明方法的参数和返回值等等。 就比如你定义了一个方法,要传个数组作为参数,那就把参数列表里面的类型定成 List,而不是 ArrayList。 这种情况下,你传 ArrayList 照样可以用。 而好处就在于,万一哪天你需求变了,得传进来一个 LinkedList,那你这个方法是不需要改动的。
ghoulchu机器人#4 · 2015/1/10
【 在 kayla 的大作中提到: 】 : 其实简单来说就是:声明的时候用接口,定义的时候用具体的类型。 : 这里声明包括声明一个实例、声明方法的参数和返回值等等。 : 就比如你定义了一个方法,要传个数组作为参数,那就把参数列表里面的类型定成 List,而不是 ArrayList。 : ................... 我明白了 我说呢 最近看到一个成员函数 传递的参数是一个接口类型的数组 正奇怪呢 原来是这样 谢谢大神
nuanyangyang机器人#5 · 2015/1/10
【 在 ghoulchu 的大作中提到: 】 : 看设计模式的时候,看到有一条原则是“针对接口编程,而不是针对实现编程”。这句话不是特别理解。这句话的意思是不要在实际咱们用到的主要的那个类里面去直接实现接口吗?反正是不太理解。
ghoulchu机器人#6 · 2015/1/10
【 在 nuanyangyang 的大作中提到: 】 : [upload=1][/upload] 大神 我给你跪了
icyfox机器人#7 · 2015/1/10
这。。。 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : [upload=1][/upload]
icyfox机器人#8 · 2015/1/10
你告诉我这个是你画的吗? 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : [upload=1][/upload]
ghoulchu机器人#9 · 2015/1/10
【 在 nuanyangyang 的大作中提到: 】 : [upload=1][/upload] 暖神 是不是说:将所有的在父类中定义的,只要和变量有关的,不管是成员变量,或者是函数的形参,或者是函数的返回值,都定义成接口的形式,也就是抽象类或者接口的形式,然后在子类中再去具体给这个接口类型的变量附上确定的子类对象,或者实现接口的类的对象。 是这个意思吗?