java篇 【15】抽象类与接口的应用 《==重要

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}《========================实现类








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值