【java】实现接口并创建工厂模式简易实例详解
java中接口interface是面向对象的核心,它比抽象类更加严格,在实际项目中,如果多个类单单继承同一个抽象类,但这几个类的功能不可能跟这一个抽象类相同,不符合情理。而接口可以让每个接口继承多个接口,也可以被多个类实现。
比如:手机、wifi、蓝牙、USB接口、MP3等都支持USB接口,而手机是个抽象的词,HTC手机也可以支持USB接口,所以接口完全符合实际情况。而工厂模式封装了具体的对象,减少了工作量。
下面就来用简易实例详解实现接口和创建工厂模式:
1、首先,比如用USB接口的例子解释实现接口:
创建4个接口,分别是USB接口、支持USB的Wifi接口、支持USB的Phone接口和小度Wifi的DuWifi接口,Wifi和Phone分别可以继承USB接口,而DuWifi也可以实现Wifi和Phone2个接口(说明DuWifi支持Wifi和Phone2个功能),值得注意的是实现2个接口必须实现这2个接口下的所有方法,代码如下所示:
①USB.java
interface USB{
2. void read();
3. void write();
4.}
②Wifi.java
interface Wifi extends USB{
2. void read();
3. void write();
4.}
③Phone.java
interface Phone{
2. void camera();
3. void memory();
4.}
④DuWifi.java
class DuWifi implements Wifi,Phone{
2. public void read(){
3. System.out.println("DuWifi read");
4. }
5. public void write(){
6. System.out.println("DuWifi write");
7. }
8. public void camera(){
9. System.out.println("DuWifi camera");
10. }
11. public void memory(){
12. System.out.println("DuWifi memory");
13. }
14.}
2、然后,假如又多了个小米手机和联想手机,那么只需实现Phone接口,另外如果联想手机有附加功能,可以附加上自己的方法。代码如下所示:
①MiPhone.java
class MiPhone implements Phone{
2. public void camera(){
3. System.out.println("MiPhone camera");
4. }
5. public void memory(){
6. System.out.println("MiPhone memory");
7. }
8.}
②LenovoPhone.java
class LenovoPhone implements Phone{
2. public void camera(){
3. flash();
4. System.out.println("Lenovo camera");
5. }
6. public void memory(){
7. System.out.println("Lenovo memory");
8. }
9. public void flash(){
10. System.out.println("Lenovo flash");
11. }
12.}
3、到这里小米手机和联想手机功能添加完毕,可以测试这2个类是否实现接口正确,比如用flag作为监听用户的选择,那测试类Test代码以及测试结果如下:(这里要注意的是,要调用Phone的方法,可以使用向上转型的方法。)
Test.java
class Test{
2. public static void main(String args[]){
3. Phone phone=null;
4. int flag=0;
5. if(flag==0){
6. phone=new MiPhone();
7. }else if(flag==1){
8. phone=new LenovoPhone();
9. }
10. phone.camera();
11. phone.memory();
12. }
13.}
4、由上面得知,一个接口可以继承多个接口和多个类可以共同实现一个接口,但最后测试不难发现,假如增加了多部手机(100部),而想使用这么多部手机,就要创建多次对象,很复杂,到这里就涉及到了工厂模式。
有了工厂模式,只需在工厂中创建对象,增加多部手机,就不用在使用对象(手机)时而创建多个对象了,这样解决了冗余情况,减少了工作量。
值得注意的是:
①创建工厂就好是静态static的,方便直接调用;
②和向上转型可以调用更多的方法;
③输入参数来判断用户的行为。
工厂创建好后,只需在测试代码中调用即可,其结果也是一样的。
5、到这里java实现接口并创建工厂模式简易实例详解就结束了,实现接口主要是方便后期实体类调用;而工厂模式主要是方便后期增加功能方便调用所创建的。
注意事项:
接口的实现和工厂模式的熟练掌握还需要通过大量实践、练习积累,才能熟能生巧、运用自如。