天天看点

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

工厂方法则把不同的产品放在实现了工厂接口的不同工厂类里面,这样就算其中一个工厂类出了问题,其他工厂类也能正常工作,

互相不受影响,以后增加新产品,也只需要新增一个实现工厂接口工厂类,就能达到,不用修改已有的代码。