java代码模式(第一讲).ppt

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java代码模式(第一讲)

java代码模式 目的 掌握java语言的基本用法 把代码组织成易修改的形式 编写可重用的组件 参考文献:effective java 主要内容 创建和销毁对象 类和接口 方法 异常 基本概念 JAVA 语言支持四种类型: 类的成员 方法的原型 一、创建和销毁对象 第一条 考虑用静态工厂方法代替构造函数 静态工厂方法 对于一个类,为了让客户获得它的一个实例,最通常的方法是提供一个公有的构造函数。实际上还有另外一种技术,尽管较少为人所知,但也应该成为每个程序员的工具箱中的一部分。类可以提供一个公有的静态工厂方法。所谓静态工厂方法,实际上只是一个简单的静态方法,它返回的是类的一个实例。下面是一个简单例子。 public class A { private A a=null; private A(){} public static A getInstance() { if(a==null) { a= new A(); } return a; } } 好处一 与构造函数不同,静态工厂方法具有名字。如果一个构造函数的参数并没有确切地描述被返回的对象,那么选用适当名字的静态工厂可以使一个类更易于使用,并且相应的客户代码更易于阅读。 静态工厂方法的第二个好处是,与构造函数不同,它们每次被调用的时候,不要求非得创建一个新的对象。 好处二 与构造函数不同,它们可以返回一个原返回类型的子类型的对象。这样我们在选择被返回对象的类型时就有了更大的灵活性。一个API可以返回一个对象,同时又不使该对象的类成为公有的。以这种方式把具体的实现类隐藏起来,可以得到一个非常简洁的API。这项技术非常适合于基于接口的框架结构,因为在这样的框架结构中,接口成为静态工厂方法的自然返回类型。例子 坏处 类如果不含公有的或者受保护的构造函数,就不能被子类化。对于公有的静态工厂所返回的非公有类,也同样如此。 它们与其他的静态方法没有任何区别。在API文档中,它们不会像构造函数那样被明确标示出来。而且,静态工厂方法代表了一种对规范的背离。但是静态工厂方法的两个名字已经变得很流行了:valueOf和getInstance. 小结 静态工厂方法和公有的构造函数都有它们各自的用途,我们需要理解它们各自的长处。要避免一上来就提供构造函数,而不考虑静态工厂,因为静态工厂通常更加合适。如果你正在权衡这两种选择,又没有其他因素强烈地影响你的选择,那么你最好还是简单地使用构造函数,毕竟它是语言提供的规范。 其它忠告一 使用私有构造函数强化singleton属性。例子 避免创建重复的对象 String s=new String(“hello”); ? String s=“hello”;例子 (参考java.lang.String的equals方法) 其它忠告二 通过私有构造函数强化不可实例化的能力。 工具类不希望被实例化,对它进行实例化没有任何意义。然而,在缺少显式构造函数的情况下,编译器会自动提供一个公有的、无参数的默认构造函数。对于用户而言,这个构造函数与其他的构造函数没有任何区别。在已发行的API中常常可以看到一些被无意识地实例化的类,这样的情形并不少见。 (例子:java.lang.Math) 第二条 消除过期的对象引用 消除过期的对象引用 当你从一种手工管理内存的语言(比如C或C + +)转换到一种具有垃圾回收功能的语言的时候,你作为一个程序员,工作会变得更加容易,因为当你用完了对象之后,它们会被自动回收。当你第一次经历对象回收功能的时候,你会觉得这有点不可思议。这很容易会让你留下这样的印象,认为自己不再需要考虑内存管理的事情了。实际上,这是不正确的。例子 二、类和接口 类和接口是java程序设计语言的核心,它们也是java语言的基本抽象单元。Java语言提供了许多强大的基本元素,供程序员来设计类和接口。下面是帮助你更好的利用这些语言元素,以便你设计出来的类和接口更加有用、健壮和灵活。 第三条 使类和成员的可访问能力最小化 封装 要想区别一个设计良好的模块与设计不好的模块,最重要的因素是,这个模块对外部的其他模块而言,是否隐藏了内部的数据和其它的实现细节。把它的API和实现细节清晰地隔离开来,模块之间只通过它们的API进行通信,这种概念叫“信息隐藏”,也就是我们常说的“封装”。 虽然信息隐藏本身是对内还是对外,都不会有更好的性能,但是它使得有效的性能调节成为可能。 可访问性 一个实体的可访问性是该实体声明所在的位置,以及该实体声明中所出现的访问修饰符共同决定的。例子 其它忠告一 经验表明,你应该尽可能地使每一个类或成员不被外界访问。 如果一个类或者接口能被做成包级私有的,那

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档