인터페이스 프로그래밍
왜 인터페이스에 맞추어 프로그래밍해야 합니까?
이론을 말하지 않고 바로 실례를 들겠습니다.
데이터베이스에user의 간단한 예를 쓰다
먼저
package com.bjsxt.model;
public class User {
private String name;
private String password;
// get,set
}
그리고 저희가 서비스를 추가하면 업무 논리는user가 가지고 있어야 할 논리를 포함합니다. 예를 들어save delete...package com.bjsxt.services;
import com.bjsxt.dao.UserDao;
import com.bjsxt.model.User;
public class UserService {
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void Save(User u){
userDao.save(u);
}
}
이 userdao는 무엇입니까?사용자 서비스는 주로 업무 논리적인 일을 하지만 더욱 구체적인 업무 실현(데이터베이스와 관련된)은dao로 구성된다
userdao는 주로 데이터베이스에서 접촉하는 일을 한다
package com.bjsxt.dao;
import com.bjsxt.model.User;
public class UserDao {
public void save(User u) {
// TODO Auto-generated method stub
System.out.println(" mysql");
}
}
문제가 생겼어요. 저희가 원래 mysql를 썼는데 지금oracle로 바꾸고 싶어요.위의 UserDao를 userdaomysql로 변경합니다.
userdaooracle 하나 더.
물론 위에userdao에 인터페이스를 더 넣어주세요.
다음과 같습니다.
package com.bjsxt.dao;
import com.bjsxt.model.User;
public class UserDaoMysql implements UserDao {
@Override
public void save(User u) {
// TODO Auto-generated method stub
System.out.println(" mysql");
}
}
package com.bjsxt.dao;
import com.bjsxt.model.User;
public interface UserDao {
public void save(User u);
}
그럼 마지막 테스트 함수는 쓰기 쉬워요.package com.bjsxt.test;
import com.bjsxt.dao.UserDaoMysql;
import com.bjsxt.model.User;
import com.bjsxt.services.UserService;
public class Test {
public static void main(String[] args) {
User user=new User();
UserService userService=new UserService();
UserDao dao=new UserDaoMysql();
userService.setUserDao(dao);
userService.Save(user);
}
}
oracle로 바꾸려면 어떻게 해요?
UserDao dao=new UserDaoOracle();
인터페이스를 향한다는 뜻이에요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.