• 模板模式(Template Pattern)


      模板模式总的来说就是父类定义好步骤与方法,且父类将公共的内容进行抽取,然后子类只做不同的内容即可。

    @Slf4j
    public abstract class GoHomeTemplate {
    
        public void goHomeMian(){
            log.info("========= goStation ============");
            buyTickets();
            ridingTools();
            log.info("========= goHome ============");
        }
    
        protected abstract void ridingTools();
    
        protected abstract void buyTickets();
    }
    @Slf4j
    public class ShipGoHome extends GoHomeTemplate {
        @Override
        protected void ridingTools() {
          log.info("============ by ship ===============");
        }
    
        @Override
        protected void buyTickets() {
            log.info("============ buy ship tickets===============");
        }
    }
    @Slf4j
    public class TrainGoHome extends GoHomeTemplate {
        @Override
        protected void ridingTools() {
          log.info("============ by train ===============");
        }
    
        @Override
        protected void buyTickets() {
            log.info("============ buy train tickets===============");
        }
    }

      测试

    @Slf4j
    @SpringBootTest
    public class TemplateTest {
    
        @Test
        public void builderTest(){
            GoHomeTemplate shipGoHome = new ShipGoHome();
            shipGoHome.goHomeMian();
        }
    
    }

      模板模式总体比较简单,没什么可说的,但是在看模板模式的时候,一直有个问题,模板模式和策略模式的区别是什么?

      其实模板模式和策略模式并没有一个很明确的区分点,在我看来,可能是侧重点不同,模板模式更注重的是子类要按照父类定义好的流程处理,而策略模式,更像是一个散装的内容,其子类只是对付类中某一种场景的具体实现,至于顺序或如何使用,需要调用者自行控制。

  • 相关阅读:
    内网穿透
    canvas 满天星
    swift 获取文件的Md5值
    swift UITextView内容距离边框边距设置
    swift UITextField光标聚焦以及光标颜色修改
    swift3.0 移除当前页面的前一个页面
    swift3.0 屏幕截图并且保存到本地相册
    swift3.0 UITableView侧滑支持多选项
    swift3.0 点击UIScrollView中输入框之外的区域关闭键盘
    swift3.0 底部弹出菜单 UIAlertController的使用
  • 原文地址:https://www.cnblogs.com/liconglong/p/14172899.html
Copyright © 2020-2023  润新知