网站的大小,深圳将进一步优化防控措施,预付做网站订金怎么做账,drupal wordpress网站java接口版本控制维护是软件开发的重要方面之一#xff0c;并且经验证明#xff0c;保持较低组件可视性的软件比暴露更多组件的软件更易于维护。 您不会在一开始就意识到它#xff0c;但是在重新设计应用程序时会严重错过它。 由于保持向后兼容性是许多应用程序的“必须具备… java接口版本控制 维护是软件开发的重要方面之一并且经验证明保持较低组件可视性的软件比暴露更多组件的软件更易于维护。 您不会在一开始就意识到它但是在重新设计应用程序时会严重错过它。 由于保持向后兼容性是许多应用程序的“必须具备”要求因此最终会打补丁并重复同样的错误。 您不能做太多事情因为许多其他应用程序与您的类和接口紧密集成在一起。 Java从一开始就提供对访问修饰符的支持因此始终将封装放在优先地位。 它提供了三种方法来控制任何类型例如类或接口的可见性方法是将它们设置为公共程序包私有或私有。 保护发生了什么事我们不能将保护与类或接口一起使用。 不您不能您只能使用两个具有类型的访问修饰符protected不是类或接口的合法修饰符。 另外顶级类其名称与包含它的Java源文件的名称相同可以是公共的也可以是包私有的没有任何访问修饰符也不能是私有的。 只有嵌套类可以是privatepublic或package-private 。 每个人都可以访问公共类并且它是最可见的。 尝试仅公开关键接口在您认为实现完整且成熟之前切勿公开您的实现。 另一方面private Type是最不可见的并且在Java中只有嵌套的类或接口可以是private。 由于它是最不可见的因此您可以完全控制该类以通过经验新技术工具和重新设计来更改其行为。 一个聪明的中途是package-private可见性这也是默认的可见性没有像package-private这样的关键字。 相反如果您不提供任何访问修饰符则Java会假定它是程序包私有的并随后使其仅在同一程序包上可见。 如果您的类和接口仅在同一程序包中的其他类之间共享请使它们成为程序包专用的。 由于客户端无法访问它们因此更改它们也是相对安全的。 除了使用访问修饰符降低类或接口的可见性之外还有两种其他方法可以执行此操作具体取决于您的运行时环境。 在组件级别例如在像WebsphereWeblogic或JBoss这样的Application Server中可以对实现类进行代理或包装以最大程度地减少外部风险。 无论您做什么总会有某种类型需要暴露给外部世界但是使用代理或包装您仍然可以管理它们。 即使客户端程序可以加载代理的实现类它们也将大部分获得不可变的代理或包装。 例如来自Java Servlet APIjavax.servlet的getServletContext返回javax.servlet.ServletContext的实现该实现通常是不可变的代理可以履行ServletContext接口中所作的承诺。 应用服务器很可能以不同的javax.servlet.ServletContext接口实现运行。 可以在其他外部暴露的接口例如ServletRequestServletResponsejavax.ejb.EJBContextjavax.ejb.TimerService等的实现中使用类似的模式。不同的应用程序服务器可以使用不同的实现来支持这些全局接口。 编写开源库也是了解控制类和接口可见性需求的一种好方法。 另一个有趣的情况是基于组件的Java应用程序服务器例如JBossWebLogic或WebSphere。 这些服务器提供低级服务例如事务管理安全性持久性对象池等。简而言之生产系统使用应用程序服务器的代码以及应用程序的代码来完美地工作。 为了便于维护例如在不同的应用程序服务器之间切换您的应用程序和服务器代码应松耦合并应保持安全距离。 为了安全起见应从用户应用程序中完全隐藏应用程序服务器的内部实现类和接口。 如果应用程序打包了服务器包含的相同库则必须注意服务器不要通过线程上下文类加载器无意中加载应用程序的版本。 我最喜欢的EnumSet类是控制可见性的另一个有趣示例。 Java设计人员使其成为避免实例化的抽象类并提供了工厂方法作为创建该类实例的唯一方法例如EnumSet.of或EnumSet.noneOf方法。 在内部它们具有RegularEnumSet和JumboEnumSet形式的两个单独的实现这些实现由静态工厂方法根据键Universe的大小自动选择。 例如如果给定Enum中的值数小于64则使用RegularEnumSet否则返回JumboEnumSet的实例。 这种设计的优点在于这两个实现都是私有包的这意味着客户对它们一无所知。 它们对用户是完全透明的并且通过将这些类抽象化可以增强安全性因为您无法创建抽象类的实例 。 这不仅使您可以选择最合适的实现而且很容易用更新更好的实现来替换它们。 尽管它们是一个非常特殊的类RegularEnumSet使用一个长值存储枚举常量。 恕我直言这是从JDK本身控制类的可见性的绝佳示例。 简而言之通过最小化可见性还利用了封装的优势封装良好的代码将更加安全和可维护。 随着技术的发展无论您今天写什么都已经过了几年所以遵循类设计的基本原则可以帮助您从更新的工具库和JDK实现中获得最大收益。 翻译自: https://www.javacodegeeks.com/2014/09/why-you-should-control-visibility-of-class-and-interface-in-java.htmljava接口版本控制