第13章 集合(10)依赖倒置与集合类参数编写
原创
©著作权归作者所有:来自51CTO博客作者钰娘娘ynn的原创作品,请联系作者获取转载授权,否则将追究法律责任
13.4.4 编写自己的算法
作者建议进行传参过程,使用父类型代替子类型,抽象类型代替约束(依赖倒置)
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
public class Main{
public static void main(String[] args) {
Main solution = new Main();
Order o = new Order();
o.orderSn = 3426423526L;
o.createdPerson = "逸夫";
Store s = new Store();
s.storeId = 23547546L;
s.createdPerson = "爱奥斯";
System.out.println(getCreatedName(o));
System.out.println(getCreatedName(s));
}
public static String getCreatedName(Operator operator){
return operator.getCreatedPerson();
}
}
interface Operator{
String getCreatedPerson();
}
class Order implements Operator{
long orderSn;
String createdPerson;
public long getOrderSn() {
return orderSn;
}
public void setOrderSn(long orderSn) {
this.orderSn = orderSn;
}
public String getCreatedPerson() {
return createdPerson;
}
public void setCreatedPerson(String createdPerson) {
this.createdPerson = createdPerson;
}
}
class Store implements Operator{
long storeId;
String createdPerson;
public long getStoreId() {
return storeId;
}
public void setStoreId(long storeId) {
this.storeId = storeId;
}
@Override
public String getCreatedPerson() {
return createdPerson;
}
public void setCreatedPerson(String createdPerson) {
this.createdPerson = createdPerson;
}
}
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
运行结果:
🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍
🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍
这个是个比较常见的场景:添加创建人
创建人这个信息,订单会有,仓库也有,通过实现接口,任何相应的类都可以通过getCreateName 获取到对应的操作人信息
现在只看到好像接口适合统一获取操作,事实上可以进行各种不同的处理,比如,相应的单据需要的一些额外信息(操作人编号),可以通过相应的接口方法setCreateId(String)实现,统一补充在前端显示的内容中。
集合也是同样,用父类型代替子类型,可以减少方法重写的次数,使得代码更加简洁:
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
public class Main{
public static void main(String[] args) {
Main solution = new Main();
List<Integer> list = new ArrayList<>();
Set<Integer> set = new HashSet<>();
Random r = new Random();
for(int i = 1; i <= 10; i++){
int v = r.nextInt(100);
list.add(v);
set.add(v);
}
solution.printArr(list);
solution.printArr(set);
}
private<E> void printArr(Collection<E> c){
Iterator<E> it = c.iterator();
while (it.hasNext()){
System.out.print(it.next());
System.out.print("|");
}
System.out.println();
}
}
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
运行结果:
🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍
🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍
相关内容:选择 《Java核心技术 卷1》查找相关笔记
评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步
公众号 钰娘娘知识汇总