策略模式
根據用戶的需求處理數據時候需要對算法進行選擇,用戶只具有選擇權,且不參與到過程中
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();
}
}