Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 924|回复: 0

Java实现类隐藏及应用

[复制链接]

该用户从未签到

发表于 2011-8-1 21:56:32 | 显示全部楼层 |阅读模式
一、类躲藏的基本建议

  固然在java语言中要实现类的躲藏非常简朴,只需要通过三个枢纽字即可以完成。但是在大部门情况下,让JAVA程序员感到迷惑的是,在什么时候该把什么类躲藏。确实,在JAVA开发语言平台中,对于什么类需要躲藏,什么类不需要躲藏,往往没有很严格的要求。为此程序开发职员需要根据自己的工作经验来进行判定。而即使有一定程序开发经验的员工,也不一定能够在这个题目上给出很好的谜底。公说公有理,婆说婆有理,为此很难有一个同一的尺度。笔者下面几个建议,也是对自己这几年来JAVA开发工作的总结。但愿这些建议能够匡助大家解惑。

  1、不同模块之间的类要相互躲藏。现在不少应用系统,为了进步开发效率,都提出了模块化的设计理念。如最近比较流行的ERP系统,假如按模块来进行设计的话,则在开发时不同的职员可以负责各自的模块,而互不干涉。在ERP系统出售的时候,也可以按模块来进行出售,由于各个模块的功能是相对独立的。当然这只是从治理层面来说模块化设计的重要性,不外这不是我们今天要谈论内容的重点。今天要谈的是,假如应用系统按模块化来进行设计,那么不同模块之间的内如何实现躲藏呢?实在很简朴。如供给商基本信息维护、供给商进货单、应付帐款分属于三个不同的模块,分别为采购治理、库存治理与应收应付治理。现在在设计应收应付这个模块时其中有一个天生应付帐款的类,其需要用到采购治理模块中供给商的信息(付款前提等等)、仓库治理模块中的供给商进货单据(产品编号、数目、到货日期等等),然后才能够天生正确的应付帐款。那么在应用程序设计的时候该如何实现呢?是在那个应付帐款功课对应的类中直接从数据库中去查询这些信息吗,又或者去修改采购模块中对应的类来实现?这固然都可以达到预定的目的,但是都不是上上之策。个人以为,最好的方法就是程序开发职员先设计一个类(如Vender类),这个类会返回供给商编号、付款前提等信息。然后应付帐款功课中的类就直接调用这个类获取需要的信息。一方面可能良多地方都需要用到这些信息,假如每次需要的时候都利用SQL代码来获取这些信息的话,那么代码量也会很大。相反直接调用类来实现这些信息反而更加的方面。另一方面,这个Vender类对于其他类是躲藏的。也就是说,其他类只能够通过预定义的接口向这个类传递参数并直接引用其返回的结果,而不能够修改类内部的元素。如斯即使其他有十几个类或者应用程序需要调用这个类的时候,其只要输入的参数相同,则其返回的结果也就相同。那么其他类在引用返回结果的时候,就不用担心不兼容了。所以,应用程序的模块化设计促使JAVA程序要实现类与类之间的躲藏;同时JAVA类相互之间躲藏的特性也利便了应用程序的模块化设计。

  2、数据类型类与其他类之间需要实现躲藏。在任何一个应用程序开发过程中,都需要根据企业的需要设计一些比较有针对性的数据类型。由于光靠应用程序所提供的那些数据类型往往不能够知足程序开发职员的需要。如需要设计一些数组、记实等等数据类型。但是在设计这些数据类型的时候,程序职员就需要了一个挫折。如现在在开发ERP系统的过程中,多个模块(每个模块由不同的程序员负责)都需要用到统一个记实数据类型。那么是每个程序员都设计一个记实类型的数据类型,仍是共用统一个数据类型呢?假如各管各的,就需要建立多个记实类型的数据类型,治理起来比较麻烦,对后续进级也会碰到障碍。而假如大家共用一个记实类型的数据类型,大家又担心其他程序职员不小心修改了这个数据类型而给他们造成了麻烦。这之间岂非就没有和平的共存方式了呢?实在,在应用程序开发的过程中可以以为的将应用程序开人职员分为数据类型创者者与业务逻辑开发者。然后数据类型开发者可以根据其他开发职员的需要创建一些定义数据类型的类,这些类的话对于其他程序开发职员开发的类是躲藏的。也就是说,其他类不能够对这个数据类型进行修改。那么即可以进步这些数据类型的利用率,而且也可以保证其他类可以以固定的格局引用这些类。

  3、业务层与表示层之间的类要相互躲藏。利用过J2EE开发平台的人肯定知道,在开发应用程序的时候,业务逻辑层与表示层之间是相互独立的。业务逻辑层主要实现一些负责的运算,如物料需求计划运算。而表示层的话只负责一些详细的显示。如通过浏览器客户端来显示结果仍是通过软件窗口来显示运算结果。固然客户端所采用的方式不同,但是其内部的运算是相同的。此时最好把实现业务逻辑层的类与实现表示层的类相互躲藏起来。由于在实际开发过程中,他们往往是由不同的程序开发职员完成的。为了避免不同程序开发职员之间的相互干扰,避免表示层的开发职员无意中修改了业务逻辑层的JAVA类,就必需要把业务逻辑层的类躲藏起来。也就是说,表示层开发职员只需要知道业务逻辑层的类需要哪些参数、能够以什么样的形式返回结果即可。然后表示层的类在调用业务逻辑层中的类的时候,只需要按照要求输入参数、按照规则获取结果即可,而不需要关注其业务逻辑层类内部的实现机制,从而减轻了表示层开发职员的工作量。同时也避免了业务层开发职员对这个类进行修改,从而其他的应用程序开发职员可以以统一种方式来引用这些类。

  4、假如某个业务逻辑还不怎么完善时,要执行躲藏。在应用程序开发的过程中,可能某些业务逻辑暂时没有很好的解决方案,但是需要的参数或者返回的结果是确定的。此时可以把这个业务逻辑建立一个的类,并对其他类进行躲藏。如斯的话,当泛起更好的解决方案之后,就可以直接更改这个类中的业务逻辑。因为类中成员对于其他程序职员是躲藏的,为此对类中的处理机制进行更改并不会影响到其他职员开发的应用程序。他们只关心你能够在最短时间内获得正确的结果。为此在碰到这种情况时,最好把类与其他的类执行躲藏。

  可见,哪些类需要相互躲藏可能判定起来比较复杂。但是有一个普遍合用的原则,就是假如一个类有不同的程序职员需要引用。如用户A设计了一个统计应收帐款余额的类,用户B与C,包括用户A都需要调用这个类。那么这个类就最好进行躲藏。防止其他类在调用这个类的时候,不小心修改了其内部的实现方式。这会对其他用户调用这个类产生不利影响。



二、实现JAVA类躲藏的三个枢纽字

  之所有要实现JAVA类躲藏,主要是让任何程序开发职员都无法触及他们不应该初期的部门(如业务逻辑或者数据类型的内部操纵)。固然项目治理员可能在程序开发过程中多次告诫团队成员不要直接操纵其他开发职员所设计类中的成员。但是假如缺乏一定的控制手段,这些事情往往会在有意无意中发生。为此需要采取一些强制的手段来防止这些情况的发生。而且这些事现方式必需简朴,不能够太过于复杂。在JAVA语言平台中,就提供了Public、private、protected三个枢纽字来实现对类的躲藏与控制。

  这些枢纽字决定了类或者类中的成员是否对其他类是躲藏的,能否被其他类进行操纵与修改。如public枢纽字表示紧随其后的元素对任何人都是可用的,可以被任何人所修改。而枢纽字Private则表示除了类创建者和这个类型的内部方法之外的任何人都不能够进行访问。而枢纽Protected的作用跟Private类似,只是其是作用在继续中的。

  可见在JAVA程序开发中,要实现类的躲藏是很简朴的,也是JAVA程序员必需要把握的一项基本功。而其难度就在于在适当的时候实现类和类中成员的躲藏。这就要程序员在程序开发过程中好好琢磨了。上面提到的一些建议可供大家做参考。
回复

使用道具 举报

该用户从未签到

发表于 2011-9-5 18:12:37 | 显示全部楼层
谢谢楼主分享。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-24 03:17 , Processed in 0.375242 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表