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


戻る inserted by FC2 system