DAO(Data Access Object)について
戻る
::::::::::::::
Client.java
::::::::::::::
import java.util.*;
/**
* $Id: DAO.html,v 1.1 2009/06/22 16:11:41 kishi Exp kishi $
* @author KISHI Yasuhiro
*/
public class Client {
public static void main( String[] args ) {
FamilyDAO dao = null;
try {
dao = FamilyDAOFactory.getDAO();
} catch ( Exception e ) {
e.printStackTrace();
}
List children = dao.getChildren();
dumpList( children );
List sons = dao.getSons();
dumpList( sons );
List daughters = dao.getDaughters();
dumpList( daughters );
System.out.println( "子供の数=" + dao.getMemberCount() );
}
public static void dumpList( List list ) {
Iterator iterator = list.iterator();
int i = 0;
while ( iterator.hasNext() ) {
System.out.printf( "%2d: %s\n", ++i, iterator.next() );
}
System.out.println();
}
}
::::::::::::::
FamilyDAO.java
::::::::::::::
import java.util.*;
/**
* $Id: DAO.html,v 1.1 2009/06/22 16:11:41 kishi Exp kishi $
* @author KISHI Yasuhiro
*/
public interface FamilyDAO {
public List getChildren();
public List getSons();
public List getDaughters();
public int getMemberCount();
}
::::::::::::::
FamilyDAOFactory.java
::::::::::::::
/**
* $Id: DAO.html,v 1.1 2009/06/22 16:11:41 kishi Exp kishi $
*/
public class FamilyDAOFactory {
public static FamilyDAO getDAO() throws Exception {
return ( FamilyDAO ) Class.forName( "FamilyDAOImpl" ).newInstance();
}
}
::::::::::::::
FamilyDAOImpl.java
::::::::::::::
import java.util.*;
/**
* $Id: DAO.html,v 1.1 2009/06/22 16:11:41 kishi Exp kishi $
* @author KISHI Yasuhiro
*/
public class FamilyDAOImpl implements FamilyDAO {
private Map childrenMap = null;
public FamilyDAOImpl() {
/** 本当はデータソースをアクセスして取り出すのが普通です */
childrenMap = new HashMap();
childrenMap.put( "John", Gender.MALE );
childrenMap.put( "Paul", Gender.MALE );
childrenMap.put( "Dorothy", Gender.FEMALE );
childrenMap.put( "Jenny", Gender.FEMALE );
childrenMap.put( "Elizabeth", Gender.FEMALE );
}
public List getChildren() {
List list = new LinkedList();
Iterator iterator = childrenMap.keySet().iterator();
while ( iterator.hasNext() ) {
String name = ( String ) iterator.next();
list.add( name );
}
return list;
}
public List getSons() {
List list = new LinkedList();
Iterator iterator = childrenMap.keySet().iterator();
while ( iterator.hasNext() ) {
String name = ( String ) iterator.next();
if ( childrenMap.get( name ) == Gender.MALE ) {
list.add( name );
}
}
return list;
}
public List getDaughters() {
List list = new LinkedList();
Iterator iterator = childrenMap.keySet().iterator();
while ( iterator.hasNext() ) {
String name = ( String ) iterator.next();
if ( childrenMap.get( name ) == Gender.FEMALE ) {
list.add( name );
}
}
return list;
}
public int getMemberCount() {
return childrenMap.size();
}
}
::::::::::::::
Gender.java
::::::::::::::
/**
* $Id: DAO.html,v 1.1 2009/06/22 16:11:41 kishi Exp kishi $
*/
public enum Gender {
MALE, FEMALE;
}
■実行結果
$ java -cp . Client
1: Paul
2: Jenny
3: Elizabeth
4: Dorothy
5: John
1: Paul
2: John
1: Jenny
2: Elizabeth
3: Dorothy
子供の数=5
戻る