爪哇中的接口隔离原理
在本教程中,我们将学习接口隔离原理,这是其中之一。 固体原则.
简而言之,接口隔离原则指示不应强迫客户端实施其赢得的方法’不能使用。您始终可以从您不使用的方法中抛出UnsupportedOperationException’不想使用,但不建议使用,这会使您的班级难以使用。
让’借助于一个简单的例子就可以理解。
假设我们已经创建了如下简单的Set接口。
1 2 3 4 5 6 7 8 |
上市 接口 组<E> { 布尔值 加 (E e); 布尔值 包含(目的 o); E 天花板(E e); E 地板(E e); } |
创建一个类TreeSet.java,如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
包 组织.Arpit.爪哇2blog; 上市 类 树集 实施 组{ @覆写 上市 布尔值 加 (目的 e) { //实现此方法 返回 假; } @覆写 上市 布尔值 包含(目的 o) { //实现此方法 返回 假; } @覆写 上市 目的 天花板(目的 e) { //实现此方法 返回 空值; } @覆写 上市 目的 地板(目的 e) { //实现此方法 返回 空值; } } |
如下创建另一个类HashSet.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
包 组织.Arpit.爪哇2blog; 上市 类 哈希集 实施 组{ @覆写 上市 布尔值 加 (目的 e) { 返回 假; } @覆写 上市 布尔值 包含(目的 o) { 返回 假; } @覆写 上市 目的 天花板(目的 e) { //此方法不适用于HashSet 返回 空值; } @覆写 上市 目的 地板(目的 e) { //此方法不适用于HashSet 返回 空值; } } |
您是否看到了问题,即使您在HashSet中不需要ceiling和floor方法,我们也必须实现它们。
上述问题的正确解决方案是:
创建另一个名为NavigableSet的接口,它将具有ceiling和floor方法。
1 2 3 4 5 6 |
上市 接口 导航集<E> { E 天花板(E e); E 地板(E e); } |
和设置界面将如下更改
1 2 3 4 5 6 |
上市 接口 组<E> { 布尔值 加 (E e); 布尔值 包含(目的 o); } |
现在TreeSet.java将实现Set和NavigableSet两个接口。如下更改TreeSet.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
包 组织.Arpit.爪哇2blog; 上市 类 树集 实施 组,可导航集{ @覆写 上市 布尔值 加 (目的 e) { //实现此方法 返回 假; } @覆写 上市 布尔值 包含(目的 o) { //实现此方法 返回 假; } @覆写 上市 目的 天花板(目的 e) { //实现此方法 返回 空值; } @覆写 上市 目的 地板(目的 e) { //实现此方法 返回 空值; } } |
哈希集将仅实现Set,因为它不需要ceiling和floor方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
包 组织.Arpit.爪哇2blog; 上市 类 哈希集 实施 组{ @覆写 上市 布尔值 加 (目的 e) { 返回 假; } @覆写 上市 布尔值 包含(目的 o) { 返回 假; } } |
如您在这里看到的,HashSet没有实现任何不需要的方法。
那’关于Java中的接口隔离原理的全部内容