您现在的位置是:主页 > news > 专门做包包的网站/百度今日排行榜

专门做包包的网站/百度今日排行榜

admin2025/5/11 12:19:12news

简介专门做包包的网站,百度今日排行榜,中国即将全面疫情解封,东莞公司网站搭建多少钱设计模式--模板模式 模板模型原理 泡咖啡与泡茶的算法 泡咖啡步骤: 泡茶步骤: 水烧开 水烧开 冲泡咖啡粉 冲泡茶叶 把咖啡倒入杯子 把茶水倒…

专门做包包的网站,百度今日排行榜,中国即将全面疫情解封,东莞公司网站搭建多少钱设计模式--模板模式 模板模型原理 泡咖啡与泡茶的算法 泡咖啡步骤: 泡茶步骤: 水烧开 水烧开 冲泡咖啡粉 冲泡茶叶 把咖啡倒入杯子 把茶水倒…

                            设计模式--模板模式

 

模板模型原理

泡咖啡与泡茶的算法
泡咖啡步骤:                        泡茶步骤:
水烧开                                   水烧开
冲泡咖啡粉                            冲泡茶叶
把咖啡倒入杯子                     把茶水倒入杯子
加糖和牛奶                            加柠檬


思考   变化与不变化
代码讲解
Coffee 


public class Coffee {public void prepareRecipe() {boilWater();brewCoffee();pourInCup();addSugarMilk();}public void boilWater(){System.out.println("boilWater");}public void brewCoffee(){System.out.println("brewCoffee");}public void pourInCup(){System.out.println("pourInCup");}public void addSugarMilk(){System.out.println("addSugarMilk");}
}

Tea 


public class Tea {public void prepareRecipe() {boilWater();brewTea();pourInCup();addLemon();}public void boilWater(){System.out.println("boilWater");}public void brewTea(){System.out.println("brewTea");}public void pourInCup(){System.out.println("pourInCup");}public void addLemon(){System.out.println("addLemon");}}

 MainTest


public class MainTest {public static void main(String[] args) {Coffee mCoffee = new Coffee();Tea mTea = new Tea();mCoffee.prepareRecipe();mTea.prepareRecipe();}
}


抽象冲泡算法




HotDrink 


public abstract class HotDrink {public abstract void prepareRecipe();public void boilWater() {System.out.println("boilWater");}public void pourInCup() {System.out.println("pourInCup");}
}


模板模式的原理和设计


模板模式:封装了一个算法步骤,并允许子类为一个或多个步骤方法提供实现。模板模式可以使子类在不改变算法结构的
情况下,重新定义算法中的某些步骤
代码讲解

HotDrink 


public abstract class HotDrink {public final void prepareRecipe(){boilWater();brew();pourInCup();addCondiments();}public final void boilWater() {System.out.println("boilWater");}public final void pourInCup() {System.out.println("pourInCup");}public abstract void brew();public abstract void addCondiments();}


Coffee 


public class Coffee extends HotDrink{public void brew() {System.out.println("brewing coffee");}public void addCondiments() {System.out.println("Adding sugar and milk");}}


MainTest 


public class MainTest {public static void main(String[] args) {HotDrink mCoffee = new Coffee();HotDrink mTea = new Tea();mCoffee.prepareRecipe();mTea.prepareRecipe();}
}


hook()方法可以重写,也可以选择不重写

HotDrink 


public abstract class HotDrink {public final void prepareRecipe() {boilWater();pourInCup();brew();if(wantCondimentsHook()) {addCondimentsHook();}else {System.out.println("No Condiments");}}public boolean wantCondimentsHook() {return true;}public final void boilWater() {System.out.println("boilWater");}public final void pourInCup() {System.out.println("pourInCup");}public abstract void brew();public abstract void addCondimentsHook();
}

TeaWithHook  

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class TeaWithHook extends HotDrink{public boolean wantCondimentsHook() {System.out.println("Cndiments, yes or no?please input(y/n):");BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String result = "";try {result = in.readLine();}catch(IOException e) {e.printStackTrace();}if(result.equals("n")){return false;}else {return true;}}@Overridepublic void brew() {System.out.println("brew Tea");}@Overridepublic void addCondiments() {System.out.println("adding lemon");}}


身边模板模式

排序鸭子
数组内置的sort版本
Comparable版本

Duck 


public class Duck implements Comparable{String name = "";int weight = 1;public Duck(String name, int weight) {this.name = name;this.weight = weight;}public String toString() {return name + "weight:" + weight;}public int compareTo(Object arg0) {Duck buf = (Duck)arg0;if(this.weight > buf.weight) {return 1;}else if(this.weight < buf.weight) {return -1;}return 0;}
}

进行排序

Duck[] ducks = new Duck[10];
for(int i = 0; i < 10; i++) {ducks[i] = new Duck();//添加数据
}
Arrays.sort(duck); 

好莱坞原则
好莱坞原则:别调用我们,我们会调用你(经纪人)
意义:高层无需知道调用底层的细节,解耦