接口
- 可以理解为是一种特殊的抽象类
- 抽象类:是一个事物所具有的功能
- 接口:是一个事物额外的功能
- 二者之间的选择: 推荐使用接口
- 如果父类的功能是有功能体实现的,也有只定义功能子类可以具有的功能但是没有实现,可以抽象类
- 接口的优点:
-
1.提高代码的复用性
-
2.解耦
-
3.定义编程规范
-
4.接口多实现
- 使用interface定义接口
- 组成:
-
jdk1.7及之前:
-
属性:public static final公共的静态的常量
-
修饰符public static final可以省略,默认
-
方法:public abstract 公共的抽象的方法
-
修饰符public abstract是默认的,可以不写
- 注意:
-
1.接口不能实例化
-
2.接口需要实现,实现接口使用关键字implements,实现了接口就拥有了接口中的功能(与继承很像)
-
3.接口的使用:
-
1)具体的实现类:实现了接口,就要重写这个接口中的所有抽象方法+按需新增
-
2)抽象的实现类:重写部分抽象功能+按需新增
-
4.类只能实现接口,不能继承接口,但是类只能继承类,不能实现类 类单继承类,类多实现接口
-
5.接口不能继承和实现类,接口只能继承接口,不能实现接口,接口可以多继承接口
==============================================================================================
十三种设计模式:
-
单例模式:保证一个类只能构建一个实例
-
**饿汉式**:在类第一次加载的时候就创建实例 --线程安全的
-
**懒汉式**:第一次调用功能的时候创建实例 --线程不安全的,效率较高
-
步骤:
-
1.构造器私有化
-
2.私有的静态的该类的引用
-
3.公共的静态的访问方式
-
静态代理
-
简单工厂模式
==============================================================================================
单例饿汉式*:
*/
public class Single {
//2.私有的静态的该类的引用
private static Single single=new Single();
//1.构造器私有化
private Single(){ //不允许随意再外部创建对象}
//3.公共的静态的访问方式
public static Single newInstance(){
return single;
}
}
单例:懒汉式
*/
public class SingleTon {
//2.私有的静态的该类的引用
private static SingleTon single=null;
//1.私有构造
private SingleTon(){}
//3.公共静态的访问方式
public static SingleTon newInstance(){
if(single==null){
single=new SingleTon();
}
return single;
}
}
静态代理模式:
- 真实角色:项目经理
- 代理角色:hr
- 代理行为
- 1.真是角色和代理角色实现相同的接口|父类
- 2.代理角色持有真实角色的引用
- 3.代理行为
- 优势:降低了与真实角色的交流,减少代码的耦合度,便于后去维护和扩展
*/
public class StaticProxy {
public static void main(String[] args) {
UserManager UserManager=new UserManager();
Hr hr=new Hr(UserManager);
hr.addUser();
}
}
//相同的接口
interface AddUser{
void addUser();
}
//真实角色:项目经理
class UserManager implements AddUser{
@Override
public void addUser() {
System.out.println("项目经理录用人");
}
}
//代理角色:hr
class Hr implements AddUser{
//代理角色持有真实角色的引用
private UserManager manager;
public Hr() {
// TODO Auto-generated constructor stub
}
public Hr(UserManager manager) {
super();
this.manager = manager;
}
@Override
public void addUser() {
System.out.println("------筛选简历---------");
System.out.println("------通知面试---------");
manager.addUser();
System.out.println("---------------------");
}
}