目录
一.策略模式
(封装的是做一件事的不同执行方式)
利用泛型
实例思路
1.一个功能接口,内含需要实现的方法的
2.一个功能类,内含方法可以利用泛式针对不同的自定义类用同一个方法实现比较等其他目标功能
3.一个自定义类的功能类,对接口内的方法进行重载@override,该功能类是main里所实例化的类。
举例:
main | Sort | Cat | Comparator(接口) | CatComparator |
实例化Cat类数组 | 具体排序方法 | 自定义类,含泛式 | 内含compara方法 | 重写compare方法 |
//main
Cat[] a = { new Cat(3, 3),new Cat(5, 5)};
Sorter<Cat> sorter = new Sorter<>();
sorter.sort(a, new CatComparator());
System.out.println(Arrays.toString(a));
//Sorter
public class Sorter<T>{
public void sort{
for(int i<0; i<arr.length-1; i++){
//...
minPos = comparator.compara(arr[j] ,arr[minPos])==-1 ? j : minPos;
}
swap(arr , i , minPos)
}
void swap(T[] arr, int i , int j ){
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//Comparator(接口)
public interface Comparator<T>{
int compara(T o1, T o2);
}
//CatComparartor
public class CatComparator implements Comparator<Cat>{
@override
public int compara(Cat o1, Cat o2){
if ... return -1;
else if ... return 1;
else ... return 0;
}
}
拓展
1,什么是接口,接口的概念
2,什么是多态,如何理解多态
多态性往往表现为"一个接口,多个功能"
在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的
静态多态性:函数重载&&运算符重载
动态多态性:抽象类 && 虚方法
(1)使用关键字 abstract 创建抽象类
- 不能创建一个抽象类的实例。
- 不能在一个抽象类外部声明一个抽象方法。
- 通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。
(2)使用虚方法
使用关键字 virtual 声明的。虚方法可以在不同的继承类中有不同的实现。对虚方法的调用是在运行时发生的
3.面向对象思想和优点
三大特性五大原则
易维护、易复用、易扩展