본문 바로가기

design pattern

OOP (Object Oriented Programming) 클래스 상속 오브젝트 합성 더보기
Factory Method Pattern + Strategy Pattern 추상 메소드 정의 // Interface public interface ConnectionMaker { public abstract Connection getConnection(); } // Interface 구현 public class ConnectionMakerImpl implements ConnectionMaker { @Override public Connection getConnection() { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("url", "user", "passed"); return connection; } } // Super Class public class U.. 더보기
Strategy Pattern 인터페이스 정의 // Interface public interface ConnectionMaker { public abstract Connection getConnection(); } // Interface 구현 public class ConnectionMakerImpl implements ConnectionMaker { @Override public Connection getConnection() { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("url", "user", "passed"); return connection; } } // Super Class public class Us.. 더보기
Factory Method Pattern + Template Method Pattern 추상 메소드 정의 /* Super Class */ public abstract class UserDao { // 템플릿 메소드 패턴 > 서브클래스에서 구체적인 오브젝트(Connection) 생성 방법을 결정하도록 추상화 public abstract Connection getConnection(); } // Sub Class 1 public class DUserDao extends UserDao { @Override public Connection getConnection() { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("url", "user", "passed"); return con.. 더보기
Template Method Pattern 상속을 통해 슈퍼클래스 기능 확장 'hook method' : Override 할 수 있도록 만든 메소드 /* Super Class */ public abstract class UserDao { // 템플릿 메소드 패턴 > 서브클래스에서 구체적인 오브젝트(Connection) 생성 방법을 결정하도록 추상화 public abstract Connection getConnection(); } // Sub Class 1 public class DUserDao extends UserDao { @Override public Connection getConnection() { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.g.. 더보기
loC (Inverse Of Control) 제어의 역전 일반적 제어의 흐름오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지를 스스로 관장한다. 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조 제어의 역전오브젝트가 자신이 사용할 오브제트를 스스로 선택하거나 생성하지 않는다. 또 자신도 어떻게 만들어지고 어디서 사용되는지를 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다. ex.1서블릿을 생각해보자. main() 메소드가 있어 직접 실행시키지 않으면서 서블릿에 대한 제어 권한을 가진 컨테이너가 적절한 시점에 서블릿 클래스의 오브젝트를 만들고 그 안의 메소드를 호출한다. ex.2 템플릿 메소드 패턴을 생각해보자. 추상 UserDao를 상속한 서브클래스는 getConnection() 을 구현한다... 더보기