如何删除重复的流逻辑?

时间:2014-05-07 09:21:04

标签: oop design-patterns

我有一个服务/经理类,我从数据源获取用户。这些方法在流程中是模拟的,但具有不同的检索方法。

    public User GetByUserName(string userName)
    {
        user = dependencyResolver.UserRepository.GetByUserName(userName);

        if (user == null) return null;

        AddStuffToUser();

        return user;
    }

    public User GetById(int id)
    {
        user = dependencyResolver.UserRepository.GetById(id);

        if (user == null) return null;

        AddStuffToUser();

        return user;
    }

    public User GetByUserName(string userName, string encryptedPassword)
    {
        user = dependencyResolver.UserRepository.GetByUsernameAndPassword(userName, encryptedPassword);

        if (user == null) return null;

        AddStuffToUser();

        return user;
    }

我想删除流逻辑的重复,但我找不到令人满意的设计。我可以通过使用OOP来实现,但我认为这为这么简单的任务增加了很多复杂性。我也尝试将fetch方法作为Func<>参数传递,但由于fetch方法具有不同的参数,我没有把它弄好。

我的选择在哪里?

1 个答案:

答案 0 :(得分:0)

替换:

if (user == null) return null;

        AddStuffToUser();

        return user;

使用:

return doXYZ(user);

并添加:

private User doXYZ(User user){
    if (user != null){
        AddStuffToUser();
        return user;}
    return null;

此时你已经放置了9行9和更好的代码风格(OOP标准在任何任务中都很有用)