Rust-简单工厂模式

简单工厂模式 

复制代码
trait Login {
    fn verify(&self, name: String, password: String) -> bool;
}

enum LoginType {
    Domain,
    Password,
}

struct DomainLogin {}

impl Login for DomainLogin {
    fn verify(&self, name: String, password: String) -> bool {
        /**
        * do some work
        * */
        println!("login via domain");
        true
    }
}

struct PasswordLogin {}

impl Login for PasswordLogin {
    fn verify(&self, name: String, password: String) -> bool {
        /**
        * do some work
        * */
        println!("login via password");
        true
    }
}

struct LoginManager;

impl LoginManager {
    fn factory(type_: &LoginType) -> Box<dyn Login> {
        match type_ {
            LoginType::Domain => Box::new(DomainLogin{}),
            LoginType::Password => Box::new(PasswordLogin{}),
        }
    }
}

fn main() {
    let login = LoginManager::factory(&LoginType::Domain);
    login.verify("name".to_string(), "password".to_string());

    let login = LoginManager::factory(&LoginType::Password);
    login.verify("name".to_string(), "password".to_string());
}
复制代码

 

posted @   johnny_zhao  阅读(128)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-02-16 Robolectric结合Android Studio的使用
点击右上角即可分享
微信分享提示