天天看點

JAVA學習筆記6------接口,工廠模式

接口當一個抽象類中的方法 全都是抽象方法的時候 這時可以将該抽象類

用另一種形式定義和表示 就是 interface接口

接口内除了抽象方法之外 還有全局常量

接口常見成員  這些成員均有固定修飾符

1 抽象方法  public static final

2 全局常量  public abstract

接口中成員都是公共的權限

定義接口的關鍵字不是class 是interface

interface Demo{

    public static final int NUM = 4;

    abstract void show();
    abstract void show2();
}
class DemImp implements Demo{
    public void show()
    {
    
    }
    public void show2()
    {
    

    }

}

public class InterfaceDemp {

    public static void main(String[] args) {
        //三個輸出都對 static 常量當然可以直接調用
            DemImp d = new DemImp();
            System.out.println(d.NUM);
            System.out.println(DemImp.NUM);
            System.out.println(Demo.NUM);
    }

}
           

接口就應該去實作implements

繼承可以拿一些我隻需要的 但實作是你有的我全部都要拿過來

類與類之間是繼承關系 類與接口之間是實作關系

多接口

java中不直接支援多繼承 因為會出現調用的不确定性 

是以java将多繼承進行改良 在java中變成了多實作

一個類可以實作多個接口

接口細節

一個類在繼承另一個類的同時 還可以實作多個接口

class Test2 extends Q implements A,Z
{
    
}
           

接口出現避免了單繼承的局限性 但接口擴充了功能讓其變得更強大

接口與接口之間是繼承關系 而且接口可以多繼承

interface QQ extends CC,MM {
    

}
           

接口特點

對外暴露的規則

接口是程式的功能擴充

接口的出現降低耦合性

接口可以用來多實作接口中的任何域自動式final和static的、

接口是實作多重繼承的途徑  而生成遵循某個接口的對象的典型方式就是工廠方法設計模式

與直接調用構造器不同 我們在工廠對象上調用的是建立方法 而該工廠對象将生成接口的某個實作的對象 

工廠模式 主要用來執行個體化有共同接口的類 可以動态決定應該執行個體化哪一個類

public interface Product{}
//實作了産品接口的産品類
public class Washer implements Product{  
   public Washer(){  
       System.out.println("洗衣機被制造了");  
   }  
}  
  
public class Icebox implements Product{  
   public Icebox(){  
       System.out.println("冰箱被制造了");  
   }  
}  
  
public class AirCondition implements Product{  
   public Icebox(){  
       System.out.println("空調被制造了");  
   }  
}
//工廠類 

public interface Factory(){
    public Product create();//建立方法

}
//工廠方法核心 具體差個内建産品對象的具體工廠類
//建立洗衣機的工廠  
public class CreateWasher implements Factory{  
    public Product create(){  
          return new Washer();  
    }  
}  
  
//建立冰箱的工廠  
public class CreateIcebox implements Factory{  
    public Product create(){  
          return new Icebox();  
    }  
}  
  
//建立空調的工廠  
public class CreateAirCondition implements Factory{  
    public Product create(){  
          return new AirCondition();  
    }  
}  

public class Business(){
    public static void produceProduct(Factory factory){
        Product p = factory.create();

    }
    public static void main(String[] args){
        produceProduct(CreateWasher);
        produceProduct(CreateIcebox);
    }
}
           

工廠方法則把不同的産品放在實作了工廠接口的不同工廠類裡面,這樣就算其中一個工廠類出了問題,其他工廠類也能正常工作,

互相不受影響,以後增加新産品,也隻需要新增一個實作工廠接口工廠類,就能達到,不用修改已有的代碼。