JAVA第5章继承2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA第5章继承2

抽象类的实际应用 —— 模板设计 场景:假设人分为学生和工人,学生和工人都可以说话,但是说话的内容是不一样的,也就是说说话这个功能应该是一个具体功能,而说话的内容就要由学生或工人来决定了,所以此时就可以使用抽象类实现这种场景。 现实生活中的模板 接口的实际应用 —— 制定标准 接口在实际中一般是用来制订标准。比如说:U盘和打印机都可以插在电脑上使用,这是因为它们都实现了USB的接口,对于电脑来说,只要是符合了USB接口标准的设备就都可以插入进来。 问题的提出 上述引例代码虽然编译通过,但是否在设计上存在问题? 问题的分析 主方法表示一个客户端,代码最好不要太多。在上述引例中,直接在主方法中指定了要操作的子类(如Apple子类),但万一要更换子类,还要重新修改客户端。也就是说,该代码和特定的子类耦合在一起了。要如何修改才更合理呢? 问题的解决 JVM的工作原理:程序通过?JVM ?找到操作系统。所有程序只认JVM,每个JVM会根据不同的OS自动进行匹配(自适应),具有很高的可移植性。 本程序也可以按此办法解决,在接口和具体子类之间加入一个过渡端,通过该过渡段取得接口实例。该过渡端就是工厂类。 工厂类的操作流程 客户端通过工厂取得实例,然后工厂判断实例化指定的对象,并返回该对象,后端再通过返回的接口对象调用接口中的eat方法,这样就完成了整体的代码操作过程,这样就设计得很合理了。 运行结果虽然一样,但是取得实例的过程却不一样,因为接口对象的实例化是通过工厂取得的,这样今后如果再有子类扩充,直接修改工厂类过渡端就可以根据标记得到相应的实例,灵活度较高。 假设情形: 某日,张三借给李四5000000元钱。 李四不还了,张三很生气,后果很严重。 张三找到讨债公司员工王五。 王五准备好了刀子、绳索、枪支等刑罚工具,帮张三把钱讨要回来了。 此时,张三委托王五找李四要钱,也就是说王五代理了张三的请求。 所谓的代理设计就是指利用一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。就好比在生活中经常使用到的代理上网那样,客户通过网络代理连接网络,由代理服务器完成用户权限,访问限制等与上网操作相关的操作。 分析结果 不管是代理操作也好,真实操作也好,其共同的目的就是上网,所以用户关心的只是如何上网,至于里面是如何操作的用户并不关心。 class Proxy implements Network { //代理上网 private Network network; public Proxy(Network network) { //设置代理的真实操作 this.network = network; } public void check( ) { //与具体上网相关的操作 System.out.println( 检查用户是否合法。); } public void browse( ) { check( ); //可同时调用多个与具体业务相关的操作 network.browse( ); //调用真实的主题操作(上网) } } public class ProxyDemo { public static void main(String args[ ]) { Network net = null ; net = new Proxy ( new Real ( ) ) ; //指定代理操作 net.browse( ) ; // 用户只关心上网浏览这一个功能 } } 代理操作流程 真实主题完成的只是上网的最基本功能,而代理主题要做比真实主题更多的业务相关的操作。 问题的提出 对于Java程序来说,如果一个类要实现一个接口,则肯定要重写此接口中的全部抽象方法,那么如果,此时一个接口中定义的抽象方法过多,但是在子类中又用不到这么多抽象方法,则肯定很麻烦。如何解决呢? class WindowImpl extends WindowAdapter { public void open( ) { System.out.println( 窗口打开。); } public void close( ) { System.out.println( 窗口关闭。); } } public class AdapterDemo { public static void main(String args[

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档