@startuml

!includesub ./ftd_model.puml!CiscoFTDModel
!include ./ftd_ssh_strategy.puml

interface CiscoFTDFactoryInterfaces {
    + perform_request()
}

!startsub CISCOFTDSSHOPERATIONFACTORY
class CiscoFTDSSHOperationFactory {
    + CLASS_NAME : str
    + ftd_instance: CiscoFTD
    + request_data : Optional[Dict]
    + __init__(ftd_instance: CiscoFTD, request_data: Optional[Dict]) -> None
    # _parse_client_data(client_data: Dict) -> Dict
    # _parse_ftd_response(ftd_response: CiscoFTDSSHOperationCommandsListPyModel) -> Dict
    + perform_request() -> Dict
    + prepare_operation() -> CiscoFTDSSHOperation
}
!endsub

!startsub CISCOFTDCACHEOPERATIONFACTORY
class CiscoFTDCacheOperationFactory {
    + ftd_instance
    + request_data : Optional[Dict]
    + __init__(ftd_instance: CiscoFTD, request_data: Optional[Dict]) -> None
    # _get_config() -> str
    + perform_request() -> List[Dict]
}
!endsub

CiscoFTD --o CiscoFTDCacheOperationFactory
CiscoFTD --o CiscoFTDSSHOperationFactory

CiscoFTDSSHOperationFactory ..|> CiscoFTDFactoryInterfaces
CiscoFTDCacheOperationFactory ..|> CiscoFTDFactoryInterfaces

CiscoFTDSSHOperationFactory *-- CiscoFTDSSHOperation

@enduml