Skip to content

Instantly share code, notes, and snippets.

@solidnerd
Created May 18, 2014 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save solidnerd/1ecfcb7d408a755f66cf to your computer and use it in GitHub Desktop.
Save solidnerd/1ecfcb7d408a755f66cf to your computer and use it in GitHub Desktop.
Example for an implentation of the DAO Pattern from http://java-latte.blogspot.de/2014/02/the-data-access-object-dao-design.html
/*
* Transfer Object as per diagram
*/
public class CircleTransfer{
private int x;
private int y;
private int radius;
void setX(int x){
this.x=x;
}
void setY(int y){
this.y=y;
}
int getX(){
return x;
}
int getY(){
return y;
}
void setRadius(int radius){
this.radius=radius;
}
int getRadius(){
return radius;
}
}
/*
* DAO as per Diagram
*/
interface CircleDAO{
public void insertCircle(CircleTransfer circle);
public CircleTransfer findCircle(int x,int y);
public void deleteCircle(int x,int y);
}
/**
* DataSource as per Diagram
* Oracle Implementation
*/
public class RDMSDAO implements CircleDAO{
@Override
public void insertCircle(CircleTransfer circle) {
// insertCircle implementation as per Oracle database
}
@Override
public CircleTransfer findCircle(int x, int y) {
// findCircle implementation
return null;
}
@Override
public void deleteCircle(int x, int y) {
// deleteCircle implemenation
}
}
/**
* DataSource as per Diagram
* MySql Implementation
*/
public class MYSQLDAO implements CircleDAO{
@Override
public void insertCircle(CircleTransfer circle) {
// insertCircle implementation as per MYSQL database
}
@Override
public CircleTransfer findCircle(int x, int y) {
// findCircle implementation
return null;
}
@Override
public void deleteCircle(int x, int y) {
// deleteCircle implemenation
}
}
/*
* Factory
*/
public class DAOFactory{
public static CircleDAO getCircleDao(String sourceType){
switch(sourceType){
case "Oracle":
return new RDMSDAO();
case "mysql":
return new MYSQLDAO();
}
return null;
}
}
/*
* Core Business logic
*/
public class Circle{
private int x,y,r;
Circle(int x,int y, int r){
this.x=x;
this.y=y;
this.r=r;
}
public CircleTransfer getCircleTransferObject(){
CircleTransfer c = new CircleTransfer();
c.setRadius(r);
c.setX(x);
c.setY(y);
return c;
}
}
/*
* Client
*/
public class DaoPatternDemo {
public static void main(String[] javalatte) {
Circle c = new Circle(2,2,4);
CircleTransfer ct = c.getCircleTransferObject();
CircleDAO cDao = DAOFactory.getCircleDao("oracle");
cDao.insertCircle(ct);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment