//
//  CellFactory.swift
//  1Weather
//
//  Created by Dmitry Stepanets on 26.03.2021.
//

import UIKit

extension CellFactoryProtocol {
    func dequeueReusableCell<T: ReusableCellProtocol>(type:T.Type, tableView:UITableView, indexPath: IndexPath) -> T {
        let cell = tableView.dequeueReusableCell(withIdentifier: T.kIdentifier, for: indexPath) as! T
        return cell
    }
    
    func registerCell<T: ReusableCellProtocol>(type:T.Type, tableView:UITableView) {
        tableView.register(type, forCellReuseIdentifier: T.kIdentifier)
    }
}

public protocol CellFactoryProtocol {
    var numberOfSections:Int { get }
    func numberOfRows(inSection section:Int) -> Int
    func registerCells(on tableView:UITableView)
    func cellFromTableView(tableView:UITableView, indexPath:IndexPath) -> UITableViewCell
}
