최 적 화 된 영역 모델
/ / getFriends () 방법 이 데이터 베 이 스 를 방문 하려 면 JDBC, Hibernate 등 서로 다른 방법 으로 이 루어 질 수 있다 고 가정 합 니 다.
/ / 여기 서 편리 함 을 설명 하기 위해 하 드 코딩 을 실현 하 는 방법 은 다음 과 같다.
/**
* ( DAO)
*/
public interface PersonBo {
public List getFriends();
}
/**
*
*/
public class PersonBoImpl implements PersonBo{
/**
* or db operation
* */
public List getFriends(){
List friends = new ArrayList();
friends.add(new Person("york",27));
friends.add(new Person("wyork",28));
friends.add(new Person(" ",27));
return friends;
}
}
/**
*
*/
public class PersonBoFactory{
public static PersonBo getPersonBo(){
return new PersonBoImpl();
}
}
/ / 첫 번 째 모델: 출혈 모델?
/*
*
*/
public class Person {
private String name = "";
private int age = 0;
public Person(String name, int age) {
setName(name);
setAge(age);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public String toString() {
return "name= "+getName()+";age="+getAge();
}
}
/*
* friends
*/
public class testPerson{
public static void main(String[] args){
System.out.println(">>>>>begin");
// BO, Factory protected
// PersonBoFactory.getBookBo().getBooks();
List friends = PersonBoFactory.getPersonBo().getFriends();
if(friends!=null)
for(int i=0;i<friends.size();i++){
Person friend = (Person)friends.get(i);
System.out.println(i+".friend "+friend.toString());
}
System.out.println("<<<<<end");
}
}
/ / 두 번 째 모델: 빈혈 모델?
/ / 이 추상 은 출혈 모델 과 유사 하지만 한 가지 방법 이 더 있 습 니 다.
/*
* , , BO
*/
public abstract class AbstractPerson {
private String name = "";
private int age = 0;
public AbstractPerson() {
}
public AbstractPerson(String name, int age) {
setName(name);
setAge(age);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public String toString() {
return "name= "+getName()+";age="+getAge();
}
// !!!
public abstract List getFriends();
}
/ 빈혈 모델 의 일부분 인 것 같 지만 출혈 모델 을 계승 했다.
/*
* ,
* BO , .
* , BO
*/
public class Person extends AbstractPerson {
public Person(){
super("",0);
}
public Person(String name, int age) {
super(name, age);
}
public List getFriends() {
return PersonBoFactory.getPersonBo().getFriends();
}
}
/*
* friends
*/
public class testPerson{
public static void main(String[] args){
System.out.println(">>>>>begin");
// BO, , Person
List friends = (List)(new Person()).getFriends();
if(friends!=null)
for(int i=0;i<friends.size();i++){
Person friend = (Person)friends.get(i);
System.out.println(i+".friend "+friend.toString());
}
System.out.println("<<<<<end");
}
}
/**
상황 을 설명 하기 위해 서 두 가지 데이터 액세스 층 은 모두 같 습 니 다. 모델 Person 의 정의 가 다 르 기 때문에 testPerson 이 getFriends () 를 호출 하 는 작업 도 다 릅 니 다.
저 는 개인 적 으로 첫 번 째 Person 이 Action 이나 다른 조작 에서 PersonBoFactory 를 호출 하려 면 PersonBo 를 출력 해 야 한다 고 생각 합 니 다.
두 번 째 는 사용 하면 더욱 OO 이 고 Person 만 호출 하면 됩 니 다. 다른 BO 의 물건 은 고객 프로그래머 에 게 투명 합 니 다.
*/
/ / 오래전부터 Robbin 의 영역 모델 에 대한 토론 을 봤 는데 두 번 째 모델 이 빈혈 모델 인지 아 닌 지 모 르 겠 어 요.
/*
어떻게 보 시 는 지 모 르 겠 어 요.
업무 의 데이터 액세스 층 은 PersonBoFactory 로 격 리 되 어 어떤 위험 이 있 는 지 모 르 겠 습 니 다.
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring에서 DAO가 순환 호출될 때 데이터가 실시간으로 업데이트되지 않는 해결 방법문제를 설명하기 전에 몇 가지 전제 사항을 설명하십시오. Spring의 구성 파일에서 다음과 같은 방식으로 데이터베이스 트랜잭션을 구성했다고 가정하십시오. 현재 UserDao 및 Security Service가 있습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.