java中的接口知识(单例模式、静态代理、工厂模式)!

  1. 接的定义
    接口是特殊的抽象类
    接口的优点:定义开发规范
    提高代码的复用性
    解耦
    多实现类只能单继承
    在jdk1.7及之前接口中只能存在公共的静态的常量+公共的抽象方法
  •  公共的静态的常量:
    
  •  	public static final 数据类型 变量名=赋值;
    
  •  	修饰符可以省略,默认存在
    
  •  公共的抽象的方法:
    
  •  	public abstract 返回值类型  方法名();
    
  •  	修饰符可以省略,默认存在
    
  •  使用:类名.常量名 |实现类名.常量名|实现类对象.常量名
    
  •  	实现类对象.方法名();
    
  • 注意:
  •  1.定义接口interface关键字
    
  •  2.抽象方法必须重写
    
  •  3.接口如何使用:
    
  •  	具体的实现类去实现接口,重写里面的抽象方法 按需扩展
    
  •  	抽象的实现类实现接口,重写部分抽象方法按需扩展
    
  •  4.实现和继承很像,都能使用父类或者父接口中的功能
    
  •  5.接口不能实例化
    
  •  6.类只能继承类,继承只能单继承,类可以多实现接口,一个类可以实现多个接口
    
  •  7.接口和接口之间只能继承不能实现,接口可以继承多个接口
    
  •  8.避免实现的多个接口中存在同名方法
    
  • jdk1.8新增:
  •  1.default默认方法,是个具体的方法,只能通过实现类的对象使用
    
  •  2.静态方法,只能在当前接口中使用,不能通过实现类使用
    

public abstract class InterfaceDemo01 {
public static int a=5;
}
//定义接口
interface MyInterface{
//公共的静态常量
int A=10;
//公共的抽象方法
public abstract void haha();
void hehe();
/默认方法
public default void test(){
System.out.println(“我是默认方法…”);
}
//静态方法
public static void testStatic(){
System.out.println(“我是静态方法…”);
}
}
//接口的实现类
class ZhaoKunPeng implements MyInterface{

@Override
public void haha() {
	System.out.println("赵鲲鹏在哈哈笑");
}
@Override
public void hehe() {
	System.out.println("赵鲲鹏在hehe笑");
}

}
//重写部分抽象方法的实现类 抽象子类|抽象实现类
abstract class LiuXiaoQiang implements MyInterface{

@Override
public void haha() {
	System.out.println("刘小强在哈哈哈哈笑");
}

}

class Demo extends LiuXiaoQiang{

@Override
public void hehe() {
}	
@Override
public void haha() {
	System.out.println("哈哈哈哈笑");
}
//新增方法
public void houhou() {
	System.out.println("houhou笑");
}

}
3.简单的工厂模式:
简单工厂模式:

  • ① 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
    ② 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
    ③ 具体产品角色:工厂类所创建的对象就是此角色的实例。在 Java 中由一个具体类实
    现。
    public class Factory {
    public static void main(String[] args) {
    // QQ qq=new QQ();
    // qq.run();

    Car car=carFactory("Auto");
    car.run();
    

    }

    //工厂
    public static Car carFactory(String type){
    Car car=null;
    if(type.equals(“QQ”)){
    car=new QQ();
    }else{
    car=new Auto();
    }
    return car;
    }
    }
    //父接口
    interface Car{
    void run();
    }
    //实现类 QQ
    class QQ implements Car{

    @Override
    public void run() {
    System.out.println(“QQ在跑…”);
    }

}

//实现类 Auto
class Auto implements Car{

@Override
public void run() {
	System.out.println("Auto在跑...");
}

}
4.二十三中设计模式之一单例
单例模式:这个类只能有一个实例

  • 饿汉式: 无论是否使用,在类加载的时候先创建一个对象 线程安全的 --效率低

  • 懒汉式: 在使用的时候才创建对象,不适用不创建 线程不安全的–效率高,通过加锁控制

  • 实现单例的步骤:

  • 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 singleTon=null;
    //1.构造器私有化
    private SingleTon(){}

    //3.公共的静态的访问方式
    public static SingleTon newInstance(){
    if(singleTon==null){
    singleTon=new SingleTon();
    }
    return singleTon;
    }
    }
    //测试
    public class Test {
    public static void main(String[] args) {
    //测试饿汉式单例
    Single sin=Single.newInstance();
    System.out.println(sin);
    System.out.println(Single.newInstance());
    //测试懒汉式
    System.out.println(SingleTon.newInstance());
    System.out.println(SingleTon.newInstance());
    }
    }

5.静态模式
1.代理角色,真实角色实现相同的接口|继承相同的父类

  • 2.代理角色持有真是角色的引用
  • 3.代理行为
  • 解耦,提高的代码的服用性,便于代码的后期维护
  • 代理角色:Hr
  • 真实角色:项目经理
  • 接口:录用人
  • public class StaticProxy {
    public static void main(String[] args) {
    Manager manager=new Manager();
    Hr hr=new Hr(manager);
    hr.addUser();
    }
    }
    //录用人
    interface AddUser{
    void addUser();
    }
    //真实角色
    class Manager implements AddUser{
    @Override
    public void addUser() {
    System.out.println(“你被录用了”);
    }
    }
    //代理角色
    class Hr implements AddUser{
    //代理角色持有真是角色的引用–成员属性
    Manager manager=null;
    public Hr() {
    // TODO Auto-generated constructor stub
    }
    public Hr(Manager manager) {
    this.manager=manager;
    }
    @Override
    public void addUser() {
    System.out.println(“筛选简历”);
    manager.addUser();
    System.out.println(“谈薪资”);
    }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值