09 2019 档案

摘要:工厂方法模式:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 一、简单工厂模式: 实例化对象的时候不再使用 new Object()形式,可以根据用户的选择条件来实例化相关的类。对于客户端来说,去除了具体的类的依赖。只需要给出具体实例的描述给 阅读全文
posted @ 2019-09-30 22:57 Eden-programmer 阅读(351) 评论(0) 推荐(0)
摘要:标记接口(marker interface),不包含方法声明,只是指定(或“标记”)一个类实现了具有某些属性的接口。 例如,考虑 Serializable 接口。通过实现这个接口,一个类表明它的实例可以写入ObjectOutputStream (或“序列化”)。 标记接口与标记注解相比具有两个优点: 阅读全文
posted @ 2019-09-29 16:27 Eden-programmer 阅读(148) 评论(0) 推荐(0)
摘要:命名模式的缺点有以下三点:(在第 4 版之前,JUnit 测试框架要求其用户通过以 test[Beck04] 开始名称来指定测试方法) 1.拼写错误导致失败,但不会提示。 2.无法确保它们仅用于适当的程序元素。 3.它们没有提供将参数值与程序元素相关联的好的方法。 下面以Junit4为例来说明注解的 阅读全文
posted @ 2019-09-29 11:53 Eden-programmer 阅读(155) 评论(0) 推荐(0)
摘要:枚举类型( BasicOperation )不可扩展,但接口类型( Operation )是可以扩展的,并且它是用于表示 API 中的操作的接口类型。 or 下面的方法灵活一点:它允许调用者将多个实现类型的操作组合在一起,另一方面,也放弃了在指定操作上使用 EnumSet 和 EnumMap 的能力 阅读全文
posted @ 2019-09-29 11:36 Eden-programmer 阅读(161) 评论(0) 推荐(0)
摘要:永远不要从枚举的序号中得出与它相关的值; 请将其保存在实例属性中: 阅读全文
posted @ 2019-09-26 14:38 Eden-programmer 阅读(135) 评论(0) 推荐(0)
摘要:1.要将数据与枚举常量相关联,请声明实例属性并编写一个构造方法,构造方法带有数据并将数据保存在属性中。 // Enum type with data and behavior public enum Planet { MERCURY(3.302e+23, 2.439e6), VENUS (4.869 阅读全文
posted @ 2019-09-26 14:21 Eden-programmer 阅读(370) 评论(0) 推荐(0)
摘要:在你的 API 中使用通配符类型,虽然棘手,但使得 API 更加灵活。 如果编写一个将被广泛使用的类库,正确使用通配符类型应该被认为是强制性的。 记住基本规则: producer-extends, consumer-super(PECS)。 还要记住,所有 Comparable 和 Comparat 阅读全文
posted @ 2019-09-25 21:08 Eden-programmer 阅读(119) 评论(0) 推荐(0)
摘要:泛型类型比需要在客户端代码中强制转换的类型更安全,更易于使用。 当你设计新的类型时,确保它们可以在没有这种强制转换的情况下使用。 这通常意味着使类型泛型化。 如果你有任何现有的类型,应该是泛型的但实际上却不是,那么把它们泛型化。 这使这些类型的新用户的使用更容易,而不会破坏现有的客户端。 像泛型类型 阅读全文
posted @ 2019-09-25 21:06 Eden-programmer 阅读(153) 评论(0) 推荐(0)
摘要:使用静态方法的优点: 1.它们是有名字的,生成的客户端代码更易阅读。 如:返回素数的静态方法 BigInteger.probablePrime 2.与构造方法不同,它们不需要每次调用时都创建一个对象。 3.与构造方法不同,它们可以返回类型的任何子类型的对象。 4.返回对象的类可以根据输入参数的不同而 阅读全文
posted @ 2019-09-17 21:24 Eden-programmer 阅读(153) 评论(0) 推荐(0)