策略模式&&模板方法模式

来源:互联网 发布:炒股软件靠谱吗 编辑:程序博客网 时间:2024/05/21 15:46

原型:

public class Demo

{ String fields; do1() { //do some thing; } do2() { //do some thing; } do3() { //do some thing; } do() { d01(); d02(); d03(); }}
策略模式(strategy):定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户

public class StrategyDemo{   //通过组合的方法,将原型中的功能抽象成类   DO1 justDo1;      DO2 justDo2;      DO3 justDo3;   
   setD01/2/3(D01/2/3 d1/2/3){this.justDo1/2/3=d1/2/3;}   do()   {      justDo1.do1();  justDo2.do3();  justDo3.do3();   }}
模板方法模式(template):定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。

public class TemplateDemo{  //强调的是do里面的执行步骤顺序(及有哪几步)是固定的(即一个模板),同时某一步骤(或几步)的细节,子类可以实现其定制化。  do()  {    do1();do2();if(hook1()){  do3();}hook2();  }    do1()  {     //do some thing;  }     do2()  {     //do some thing;  }     abstract do3();      //钩子  hook1/2()  {    //don't any thing or just do some default thing;  }}

区别:strategy 是通过组合的方式将所有功能(实现算法)定制化,它着重的是每一个算法(功能)可以替换;

           而template是通过继承的方式来定制化一个固定流程的某一步,它着重的是该流程是固定的(模板),可以替换某一小步               



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大学高数听不懂怎么办 遇上自私的父母怎么办 小孩一年级数学不好怎么办 数学考试考不好怎么办 孩子奥数学不好怎么办 孩子下笔太重怎么办 小孩子写字太重怎么办 经常对小孩发火怎么办 对小孩发火后悔怎么办 小孩子不喜欢学数学怎么办? 孩子心里素质差怎么办 三年级语文太差怎么办 宝宝一年级很笨怎么办 一年级孩子太笨怎么办 孩子学习脑子笨怎么办 四年级孩子数学差怎么办 中考考不好了怎么办 初中没学高中怎么办 数学基础差该怎么办 三年级数学成绩差怎么办 夫妻差6岁怎么办 初一数学很差劲怎么办 三年级孩子成绩差怎么办 初中数学成绩不好怎么办 大人不会算数学怎么办 小学初数学不好怎么办 初中生数学计算能力差怎么办 初中生数学计算差怎么办 初一数学没救了怎么办 五年级英语不好怎么办 三年级孩子学习差怎么办 孩子三年级学习成绩差怎么办 三年级字写不好怎么办 7小孩表达能力差怎么办 孩子考了低分怎么办 初一考300分怎么办 小学三年级成绩不好怎么办 五年级考几分怎么办 思想晚熟的人怎么办 孩子学不好数学怎么办 做作业速度慢怎么办