第13章 集合(10)依赖倒置与集合类参数编写_父类

第13章 集合(10)依赖倒置与集合类参数编写_edn_02

 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;
}
}

❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤

运行结果:

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

第13章 集合(10)依赖倒置与集合类参数编写_java_03

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

这个是个比较常见的场景:添加创建人

创建人这个信息,订单会有,仓库也有,通过实现接口,任何相应的类都可以通过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();
}
}

❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤

运行结果:

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

第13章 集合(10)依赖倒置与集合类参数编写_子类_04

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

相关内容:选择 《Java核心技术 卷1》查找相关笔记

评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步

公众号 钰娘娘知识汇总