2522天 Mr.贰呆

唯一自信的就是自己的人品。
寻求王者玩家一起开黑净化峡谷环境​​

【java】实现接口并创建工厂模式简易实例详解

发布于 / 1959 次围观 / 0 条评论 / 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实现接口并创建工厂模式简易实例详解就结束了,实现接口主要是方便后期实体类调用;而工厂模式主要是方便后期增加功能方便调用所创建的。

注意事项:

接口的实现和工厂模式的熟练掌握还需要通过大量实践、练习积累,才能熟能生巧、运用自如。

sitemap