JAVA基础:四、接口 静态工厂02

_________________________________________________________________________________
_________________________________________________________________________________
 假设你去公司面试,一般都会对学历有要求,比如大学本科、硕士研究生等。
 招聘接口:“对学历有要求”,好比是接口,这是一个宽泛的标准!这就好比是程序的接口。
 因为公司招聘是有规章制度的,因此需要有这么一个进人的规范。
 对“学历要求”具体不同的内容,这就是接口的实现。
 比如HR要求人力资源或行政相关专业,
 Java开发工程师可能要求计算机相关专业。
 高级行政管理人员可能要求MBA学历等等。
 简单来说,就是不同部门、不同岗位对学历的定义(或者说具体实现)是不同的。
 因此如果你在一开始就把学历的具体内容规定死了(比如:计算机专业统招本科),
 这样一来会有以下几个问题产生:
 1、如果人力部门招这个专业很可能和自己部门的业务不对口,
      此时如果因此而修改学历要求可能暂时可以满足人力的要求,但是业务部门却又该出麻烦了。
 2、同一部门的不同职位对于专业学历高低要求不同。
      比如部门经理要求是研究生、普通员工要求是本科生,如果你直接写死,
      那么水平高的人招不进来对公司不就是损失吗?
 软件开发中很重要的一个理念就是“解耦”,接口和接口实现就是在干这件事
 定好规范,任你实现,效率可高、可低,实现内容也可随时间变化而变化,但是调用关系是不变的
 (也就是说公司在选拔人才时,无论如何学历还是必须的一环,这一点是不会变的)
_________________________________________________________________________________
_________________________________________________________________________________
接口的作用对于很多新手来说很不容易理解,我给大家举个例子。
接口只是一个规范,所以里面的方法都是空的。
假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口,
public interface PetRestaurant {
 public void buy();
}
当一只狗看到了,知道自己是宠物,所以它去实现这个接口
public class DogPet implements PetRestaurant {
 @Override
 public void buy() {
 System.out.println("我是狗,我要买狗粮");
 }
}
当一只猫看到了,知道自己也是宠物,所以也去实现这个接口
public class CatPet implements PetRestaurant {
 @Override
 public void buy() {
 System.out.println("我是猫,我要买猫粮");
 }
}
当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口
public class test {
 public void buy(PetRestaurant pet)
 {
 pet.buy();
 }
}
好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类
public class Tests {
 public static void main(String[] args) {
 PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化
PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化
test t = new test(); //实例化一个店小二
t.buy(cat); //把猫交给店小二
t.buy(dog); //把狗交给店小二
}
}
这样运行的结果就是
我是猫,我要买猫粮
我是狗,我要买狗娘
你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK
你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦
_________________________________________________________________________________
_________________________________________________________________________________
大家说的都很对,我再补充一点。
接口在开发过程中可以快速分离工作内容。
比如调用者在写业务逻辑的时候需要一个功能,可能是数据库访问,或者复杂计算,但是他的工作专注于实现业务逻辑,不想分开精力去做底层实现,那么他只需要先实现一个接口,定义了规范,然后就可以继续他的业务逻辑代码了。
而实现者可以根据这个接口规范,做具体的实现。
这样通过使用接口就可以快速的分离工作内容,达到团队并行工作的目的。
此外,如果规范是通过接口定义的,那么当你这个功能有多个实现时,你只要实现了这个接口,那么可以快速的替换具体实现,做到代码层面的完全可以分离。
总结起来就一句话:接口或者规范可以在开发过程中做到分离。
发布了44 篇原创文章 · 获赞 7 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章