1.针对各种类型的内聚性,各编写一个构件来展现这种内聚 2.如何重新设计才能提高通用性? PROCEDURE sort(a[] INTEGER) Ensure:重新排序
时间: 2024-11-25 17:14:40 浏览: 8
1. 针对不同的内聚类型,我们可以创建一些示例:
- **数据内聚(Sequential cohesion)**:所有元素围绕着共享的数据结构工作。比如,一个数组管理器:
```java
public class ArrayManager {
private int[] data;
public void add(int value);
public int removeAt(int index);
// 其他与数组操作相关的函数...
}
```
- **过程内聚(Process cohesion)**:所有操作围绕一个特定的过程进行,如排序:
```java
public interface SortingAlgorithm {
void sort(int[] array);
}
public class BubbleSort implements SortingAlgorithm {
public void sort(int[] array);
}
```
- **通信内聚(Communicational cohesion)**:模块间通过消息传递交互,如事件监听器:
```java
public class EventListener {
public void onEvent(Event event);
}
```
2. 要提高通用性,我们可以采用策略模式或模板方法来重构代码。例如,对于排序算法,将具体的排序步骤提取到一个抽象类或接口里:
```java
public abstract class Sorter<T extends Comparable<T>> {
public void sort(T[] array);
protected abstract void swap(int i, int j);
// 具体排序步骤...
}
public class QuickSort extends Sorter<Integer> {...}
public class BubbleSort extends Sorter<Integer> {...}
```
这样,用户可以根据需要选择不同的`Sorter`实现,提高了代码的灵活性和复用性。
阅读全文