美文网首页架构设计基础
模板方法模式-针对算法框架结构

模板方法模式-针对算法框架结构

作者: 架构师的一小步 | 来源:发表于2019-03-04 21:24 被阅读0次

    模板方法模式-定义

    1.定义一个操作中的算法框架
    2.将一些步骤延时到子类实现
    3.子类可以不改变算法结构,可以重新定义算法的某些特定步骤

    模板方法特点

    1.(原则->太监方法)不允许被继承和重写

    1. 算法结构固定,不允许修改
    2. 执行流程不可以重写,执行细节可以重写 swift里执行流程会加final关键字,不允许重写

    模板方法模式应用场景

    场景一:多个子类有公有方法,且逻辑基本相同
    场景二:重复复杂的算法,将核心算法设计成为模板方法,其周边细节可以由各个子类实现
    场景三:代码重构

    区别:和策略模式相比,模板方法针对算法框架结构,策略模式针对具体算法

    模板方法模式角色划分

    角色一: 抽象类->作用(定义算法框架结构,将一些特定的步骤延时到子类实现)
    角色二:具体模板实现类,不改变算法结构,选择性实现某些特定步骤

    模板方法原理案例

    //
    //  TemplateMethodComputer.swift
    //  Andy_20190306_TemplateMethod
    //
    //  Created by 王宁 on 2019/3/6.
    //  Copyright © 2019年 王宁. All rights reserved.
    //
    
    import UIKit
    
    class TemplateMethodComputer: NSObject {
    
        override init() {
            super.init()
        }
        
        //    电脑开机过程->开机过程
        //    1、激活电源(按下电源)
        func powerUp() {
            print("按下电源...")
        }
        //    2、检测硬件
        func checkHardware() {
            print("检测硬件...")
        }
        //    3、启动系统(加载系统)
        func loadOS() {
            print("启动系统...")
        }
        //    4、登录系统
        func login() {
            print("登录系统...")
        }
        
        final func startup(){
            //1、激活电源(按下电源)
            powerUp()
            //2、检测硬件
            checkHardware()
            //3、启动系统(加载系统)
            loadOS()
            //4、登录系统
            login()
        }
        
    }
    
    //
    //  HuaWei.swift
    //  Andy_20190306_TemplateMethod
    //
    //  Created by 王宁 on 2019/3/7.
    //  Copyright © 2019年 王宁. All rights reserved.
    //
    
    import UIKit
    //2.将一些步骤延时到子类实现
    //3.子类可以不改变算法结构,可以重新定义算法的某些特定步骤
    class HuaWei: TemplateMethodComputer {
    
        override func checkHardware() {
            print("华为检测硬件...")
        }
        //    3、启动系统(加载系统)
        override func loadOS() {
            print("华为启动系统...")
        }
    }
    
    
    //
    //  ViewController.swift
    //  Andy_20190306_TemplateMethod
    //
    //  Created by 王宁 on 2019/3/6.
    //  Copyright © 2019年 王宁. All rights reserved.
    //
    
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let huawei=HuaWei()
            huawei.startup()
            
            // Do any additional setup after loading the view, typically from a nib.
        }
       
        
    
    }
    

    返回结果

    按下电源...
    华为检测硬件...
    华为启动系统...
    登录系统...
    

    模板方法实际用到举例:模板方法的核心(执行流程固定有了顺序,只需实现模板方法即可,不需要关心内部流程细节(顺序))

    1.下拉刷新组件:加载流程固定
    2.viewcontroller:生命周期固定
    3.uiview:生命周期固定

    相关文章

      网友评论

        本文标题:模板方法模式-针对算法框架结构

        本文链接:https://www.haomeiwen.com/subject/fqpwuqtx.html