为具体类提供接口,规范接口和对应实现类命名

main
Teptao 7 months ago
parent 5a04f6b013
commit 115d4b0ee1

@ -7,7 +7,7 @@ import java.util.Objects;
public abstract class AbstractUser {
protected final String username;
protected final String password; // 注意:在生产系统中应存储哈希值
protected final String password;
/**
*

@ -25,7 +25,7 @@ public class Application {
this.scanner = new Scanner(System.in, "UTF-8");
// 创建数据访问层的实例
UserRepository userRepository = new InMemoryUserRepository();
IUserRepository userRepository = new UserRepository();
this.fileService = new TextFilePersistence();
// 创建应用服务层的实例,并注入依赖
this.authService = new AuthService(userRepository);

@ -4,11 +4,11 @@ import java.util.Optional;
*
*
*/
public class AuthService {
public class AuthService implements IAuthService {
private final UserRepository userRepository;
private final IUserRepository userRepository;
public AuthService(UserRepository userRepository) {
public AuthService(IUserRepository userRepository) {
this.userRepository = userRepository;
}

@ -0,0 +1,17 @@
import java.util.Optional;
/**
*
*
*/
public interface IAuthService {
/**
*
*
* @param username
* @param password
* @return UserOptionalOptional
*/
Optional<User> login(String username, String password);
}

@ -0,0 +1,16 @@
import java.util.Optional;
/**
*
* 访
*/
public interface IUserRepository {
/**
*
*
* @param username
* @return Optional
*/
Optional<User> findByUsername(String username);
}

@ -1,33 +0,0 @@
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
/**
*
*
*/
public class InMemoryUserRepository implements UserRepository {
private final Map<String, User> userDatabase = new ConcurrentHashMap<>();
public InMemoryUserRepository() {
// 初始化预定义的9个用户账户
// 小学老师
userDatabase.put("张三1", new User("张三1", "123", "小学"));
userDatabase.put("张三2", new User("张三2", "123", "小学"));
userDatabase.put("张三3", new User("张三3", "123", "小学"));
// 初中老师
userDatabase.put("李四1", new User("李四1", "123", "初中"));
userDatabase.put("李四2", new User("李四2", "123", "初中"));
userDatabase.put("李四3", new User("李四3", "123", "初中"));
// 高中老师
userDatabase.put("王五1", new User("王五1", "123", "高中"));
userDatabase.put("王五2", new User("王五2", "123", "高中"));
userDatabase.put("王五3", new User("王五3", "123", "高中"));
}
@Override
public Optional<User> findByUsername(String username) {
return Optional.ofNullable(userDatabase.get(username));
}
}

@ -1,16 +1,33 @@
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
/**
*
* 访
*
*
*/
public interface UserRepository {
public class UserRepository implements IUserRepository {
/**
*
*
* @param username
* @return Optional
*/
Optional<User> findByUsername(String username);
private final Map<String, User> userDatabase = new ConcurrentHashMap<>();
public UserRepository() {
// 初始化预定义的9个用户账户
// 小学老师
userDatabase.put("张三1", new User("张三1", "123", "小学"));
userDatabase.put("张三2", new User("张三2", "123", "小学"));
userDatabase.put("张三3", new User("张三3", "123", "小学"));
// 初中老师
userDatabase.put("李四1", new User("李四1", "123", "初中"));
userDatabase.put("李四2", new User("李四2", "123", "初中"));
userDatabase.put("李四3", new User("李四3", "123", "初中"));
// 高中老师
userDatabase.put("王五1", new User("王五1", "123", "高中"));
userDatabase.put("王五2", new User("王五2", "123", "高中"));
userDatabase.put("王五3", new User("王五3", "123", "高中"));
}
@Override
public Optional<User> findByUsername(String username) {
return Optional.ofNullable(userDatabase.get(username));
}
}
Loading…
Cancel
Save