1、为抽象类与接口实例化
在Java中可以通过对象的多态性为抽象类和接口实例化,这样再使用抽象类和接口时即可调用被子类覆写过的方法。
2、抽象类的实际应用------模版设计
场景:假设人分为学生和 工人,学生和工人都可以进行说话,但是学生和工人说话的内容是不一样的,按照这种分析,
则说话的功能是一个具体的功能,而说话的内容就要由学生或工人决定,此时就可以利用抽象类来实现这种场景。
abstract class Person{
public void say(){
System.out.println( this.getContent());//说话是具体功能,要定义成普通方法
}
publiuc abstractString getContent();//说话的内容由子类决定
}
3、接口的实际应用------制定标准
通过对象多态性为接口进行实例化,但是接口在实际中更多的作用是用来制定标准。
接口就是规定出了一个标准,计算机认的只是接口,而对于具体的设备计算机本身并不关心。
4、设计模式------工厂设计
子类为接口实例化后,调用被子类覆写过的方法。
主方法实际上就是相当于是一个客户端,如果此时需要更换一个子类,则必须修改主方法,那么这实际上就存在了问题,
但对于这样的问题该如何解决呢?
JVM工作原理:所有的程序只认JVM,每个JVM会根据所在的操作系统不同自动进行匹配,
也就是说:形成了“ 程序---》JVM ---》操作系统 ” 的结构,
实际上本程序也可以按照此种方式解决,在接口与具体子类之间可以加入一个过渡端,通过此过渡端取得接口实例。
【客户端】 --------------------> 调用过渡端 ----------------------> 【过渡端】 ---------> 子类A
|---> 使用接口中的方法 ---> 【接口】<--- 得到接口实例 <-------- |...
...
子类N
工厂类的执行流程;
【客户端】 【Factory】 【Fruit】【Apple】
|-------getInstance()----------->|
| |--------------------------------------------- new -------------------------->|
| |<-------------------------------------------实例化对象-------------------|
|<------Fruit实例----------------- |
| |
|------------------------------------------- eat ----------------------------------->|
| |
5、设计模式-----代理设计
代理上网流程:
【客户端】---》【代理服务器】处理与上网相关的其他业务 ---》【上网服务器】具体的网络操作 ---》网络
代理上网分析:
*上网
*+上网浏览():int
|^ |^
代理服务器------------------------>| |<------------------------真实服务器
|-------------------------------------------------------------------------->|
只需要定义一个上网的接口,代理主题和真实主题都同时实现此接口,然后再由代理操作真实主题即可。
代理操作:
【客户】 【Proxy】 【Real】
|
|-----------------------------------------------------------------------------实例化对象--------------------》|
|《--------------------------------------------------------------------------newinstance--------------------|
|----------------------实例化操作---------------------》|
|《-------------------newinstance----------------------|
| |-----------------》check
| |《-------------------|
| |
| |---------------真实的操作----------------------》|
| 《-----------------return-------------------------------- |
真实主题完成的只是上网的基本功能,而代理主题要做比真实主题更多的业务相关的操作。
6、设计模式-----适配器设计
一个接口中定义的抽象方法过多,但子类中又用不到这么多抽象方法,则使用起来很麻烦,所以此时就需要一个中间的过渡,
但是此时过渡类又不希望被直接调用,所以将此过渡类定义成抽象类最合适,即一个接口首先被一个抽象类先实现(此抽象类
通常称为适配器类),并在此抽象类中实现接口的若干方法(方法体为空),则以后的子类直接继承此抽象类,就可以有选择地
覆写所需要的方法。
接口 《================ 适配器类{abstract}《========================实现类