好的模块设计应该尽最大可能封装好自己的内部信息,这样可以把模块之间的耦合程度降到最低。开发得以并行,无疑这将加快开发的速度,便于系统地维护。Java中通过访问控制符来解决这个问题。
public表示这个类在任何范围都可用。
protected表示只有子类和包内的类可以使用
private-package(default)表示在包内可用
private表示只有类内才可以用
在设计的时候应该尽可能的使每一个类或者成员不被外界所访问。在设计一个类的时候应该尽量的按照4321得顺序设计。如果一个类只是被另一个类使用,那么应该考虑把它设计成这个类的内部类。通常 public的类不应该有public得字段,不过我们通常会用一个类来定义所有的常量,这是允许的。不过必须保证这些字段要么是基本数据类型要么引用指向的对象是不可修改的。不然他们将可能被修改。例如下面的定义中data就是不合理的,其他人可以改变数组中的内容,有安全漏洞,后面两个没有问题。
public class Con
{
public static final int[] data = {1,2,3};// it is bad
public static final String hello = "world";
public static final int i = 1;
}
public class Con
{
public static final int[] data = {1,2,3};// it is bad
public static final String hello = "world";
public static final int i = 1;
}
解决data安全隐患的方法有两种:
- 将公有方法替换为一个私有数组,以及一个公有的非可变列表
private static final Type[] PRIVATE_VALUES = {...};
public static final List VALUES = Collections.unmodifiableLis(Arrays.asList(PRIVATE_VALUES));
private static final Type[] PRIVATE_VALUES = {...};
public static final List VALUES = Collections.unmodifiableLis(Arrays.asList(PRIVATE_VALUES));
- 把公有的数组替换为一个公有的方法,它返回私有数组的一份拷贝
private static final Type[] PRIVATE_VALUES = {...};
public static final Type[] values(){
return (Type[])PRIVATE_VALUES.clone();
}
private static final Type[] PRIVATE_VALUES = {...};
public static final Type[] values(){
return (Type[])PRIVATE_VALUES.clone();
}
总之,应该防止把任何杂散的累接口和成员变成API的一部分,除了公有静态final域的特殊情形之外,公有类不应该包含公有域,并且确保有静态final域所引用的对性是不可变的。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ilibaba/archive/2009/01/16/3795124.aspx
分享到:
相关推荐
"Effective Java读书笔记" Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展...
《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...
根据提供的标题和描述,我们将探讨三个关键知识点:最小化类和成员的可访问性、使用访问方法而非公有域以及使可变性最小化,通过创建不可变类。 首先,让我们深入理解"使类和成员的可访问性最小化"这一原则。在面向...
标题“effective-java.pdf”与描述“effective-java.pdf”表明本文档是关于Java编程实践的指南,且内容可能来自于一本名为《Effective Java》的书籍,该书是由Joshua Bloch编写,被广泛认为是Java编程的权威指南。...
这本书的第三版包含了大量更新,涵盖了Java语言和平台的新发展,如Java 8和Java 9的新特性。以下是对《Effective Java》笔记中可能涉及的关键知识点的详细解读: 1. **单例模式**:书中强调了如何正确实现单例模式...
《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,它提供了许多最佳实践和设计原则,帮助开发者写出更高效、更可维护的代码。第三版延续了这一传统,对Java语言的新特性进行了更新,并给出了...
《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,它提供了许多实用的编程指导原则,帮助开发者写出更高效、更可维护的代码。这本书分为多个条目,每个条目都深入探讨了一个特定的Java编程实践...
记录了我的effective-Python学习笔记,精简了effective-Python中重要的部分。effective-Python是一本值得多看几遍的书,但是看后面的几遍的时候完全可以直接看自己的学习笔记。此学习笔记侧重与比较实用的部分即前四...
### Effective Robotics Programming with ROS —— 中文学习笔记 #### 知识点一:ROS环境配置与准备工作 **1.1 安装ROS Indigo** 在开始深入学习《Effective Robotics Programming with ROS》之前,首先需要搭建...
配套代码`effective-java-examples-master`是书中示例代码的集合,用于直观地展示书中的各种编程技巧和原则。 在`effective-java-examples-master`中,你可以找到以下知识点: 1. **枚举(Enums)**: 书中强调了...
《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,第二版发布于2008年。这本书旨在提供实用的编程指导,帮助开发者写出更高效、更可维护的Java代码。以下是对书中核心知识点的详细解读: 1. *...
通过学习《Effective Enterprise Java》,开发者不仅能掌握Java EE的关键技术和工具,还能理解如何在实际项目中运用这些知识,以解决企业级软件开发中的挑战。这本书是Java EE开发者必备的参考资料,无论你是初学者...
除了课程内容,阅读官方文档、经典教材如《Head First Java》、《Effective Java》等,以及观看开源项目和在线教程,可以帮助巩固理论知识,提升实践能力。 总之,Java学习笔记旨在为初学者提供全面的学习路径,从...
Effective C++是一本深入探讨C++编程实践的书籍,它提供了许多提高代码质量和效率的建议。以下是基于标题、描述和部分内容的关键知识点: 1. **虚函数的声明与使用**: - 在C++中,虚函数是实现多态性的关键。它们...
《Effective Java》是一本经典Java编程指南,作者是Joshua Bloch,这本书深入探讨了...以上内容仅是《Effective Java》各章节的部分知识点概述,书中还有更多关于Java编程的最佳实践和深入理解等待读者去发掘和学习。
Effective Java 3 学习记录 本学习记录主要介绍了 Effective Java 3 中的静态工厂方法和 Builder 模式两部分内容。 一、静态工厂方法 静态工厂方法是指返回类实例的命名规则,例如:from、of、valueOf、instance ...
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...
Effective Objective-C是本学习Objective-C的好书,没有见pdf版,亚马逊上的这儿本书的价格不菲。让我们来看看书里的内容和完整的学习笔记吧。