策略模式
根据用户的需求处理数据时候需要对算法进行选择,用户只具有选择权,且不参与到过程中
public interface Comportar {
/**
* 比较方法
* @param o1 参数1
* @param o2 参数2
* @return
*/
int comparTo(Object o1,Object o2);
}
public class NumberComportar implements Comportar {
@Override
public int comparTo(Object o1, Object o2) {
System.out.println("我是数值比较器");
return 1;
}
}
public class ObjectComportar implements Comportar {
@Override
public int comparTo(Object o1, Object o2) {
System.out.println("我是对象比较器");
return 0;
}
}
public class MyListTest {
public static void main(String[] args) {
MyList myList1 = new MyList();
MyList myList2= new MyList();
ObjectComportar objectComportar = new ObjectComportar();
NumberComportar numberComportar = new NumberComportar();
myList1.sort(numberComportar,myList1,myList2);
}
}
public class MyList {
public void sort(Comportar comportar,MyList m1,MyList m2){
comportar.comparTo(m1,m2);
System.out.println("比较完成");
}
}
模版模式
模版模式通常又叫做模版方法模式,用户没有选择,但是可以参与到过程中
public abstract class Bevegrage {
public final void create(){
//1.烧水
boilWater();
//2.准备杯子。放入原料
pourIncp();
//用水冲泡
brew();
//添加辅料
addCoundiments();
}
protected abstract void addCoundiments();
private void brew() {
System.out.println("倒入热水");
}
protected abstract void pourIncp();
private void boilWater() {
System.out.println("烧开水");
}
}
public class Coffee extends Bevegrage {
@Override
protected void addCoundiments() {
System.out.println("放入咖啡豆");
}
@Override
protected void pourIncp() {
System.out.println("放入奶油");
}
}
public class Tea extends Bevegrage {
@Override
protected void addCoundiments() {
System.out.println("放入茶叶");
}
@Override
protected void pourIncp() {
System.out.println("放入柚子");
}
}
public class Test {
public static void main(String[] args) {
Coffee coffee = new Coffee();
coffee.create();
}
}