본문 바로가기

자바10

Proxy Pattern 프록시 패턴 - 구조, Heavy object를 대리할 light object를 생성 | Design pattern 디자인 패턴 Proxy Pattern 프록시 패턴은 surrogate 와 다른 객체의 접근에 대한 통제를 할 수 있는 placeholder를 제공한다. 객체의 대리자를 이용하여 다른 객체로의 접근을 통제하는 패턴 대리 객체를 통해 원래 객체의 작업을 대신 수행 복잡한 작업과 단순한 작업을 나누어서 처리 원래의 기능을 수행하면서 부가적인 기능을 수행할 때 유용 문제점) 객체 생성에 비용(시간, 자원)이 많이 드는 Heavy object 가 있다. 프로그램이 종료될 때까지 한 번도 사용되지 않으면 시간, 자원의 낭비가 있다. Key Idea) Heavy object를 대리할 light object를 생성 - Heavy object와 동일한 인터페이스를 가지는 proxy (대리 객체) Heavy object 대신 prox.. 2021. 12. 4.
Template Method Pattern 템플릿 패턴 - 행동, 메소드 내에 알고리즘 골격을 정의한다. | Design Pattern 디자인 패턴 Template Method Pattern 작업의 일부분을 캡슐화하여 전체 일을 수행하는 구조는 그대로 유지하면서 특정 부분을 바꾸는 패턴 메소드내에 알고리즘 골격을 정의한다. variant step의 구현을 subclass들에게 미룬다.(defer) 하위 클래스는 알고리즘 구조를 변경하지 않는다. variant step을 자신의 방법으로 구현한다. The AbstarctClass 는 템플릿 메소드를 포함한다. templateMethod() templateMethod() 에서 primitiveOperation 들이 사용된다. concrete invariant operations abstract variant operations hook (default or null operation) primitiveO.. 2021. 11. 27.
Observer Pattern 옵저버 패턴 - 행동, 구독자(observers)와 주제(subject) | Design pattern 디자인 패턴 Observer Pattern Observer pattern allows a number of observer objects to synchronize its state with the subject's state. Observers(구독자, 가입자, 관찰자) 에게 특정 주제(subject)를 Push 하여 전달하거나 Pull 해서 Observer 를 필요시 주제를 가져온다. 옵저버 패턴을 트위터에 비유하여 표현한 사진을 보니 쉽게 이해가 되는 것 같다. 2개의 객체가 loosely coupled 되어있을때 , 두 객체는 상호작용한다. but 그것들은 서로를 모른다. 옵저버 패턴은 subject와 loosely coupled 된 옵저버들의 객체 설계 제공한다. 왜 그럴까? 오직 한 주제가 특정 인터페이스.. 2021. 11. 9.
Composite Pattern Example code, Designing Menus with Composite .java | Design Pattern디자인 패턴 Designing Menus with Composite Waitress Waitress는 MenuComponent 인터페이스/추상 클래스 를 통해 Menu 와 Menuitems에 access 한다. MenuComponent Menu 와 MenuItem 의 interface를 나타낸다. abstract class 를 통해 클래스 내에 원하는 기본 메소드 구현 제공 공통연산과 Menu 조작 연산으로 구성 공통연산 : getName, getDescription, getPrice, print 조작연산 : add, remove, getChild MenuItem Both Menu and Menus override print() Menu we’ll use the getName() andngetDescription().. 2021. 10. 27.
싱글톤 패턴 코드 (Singleton pattern java code) | Design Pattern 디자인 패턴 / 초기화 Eager 초기화 클래스 적재시 1회 실행, 클래스 인스턴스 생성을 실제로 사용되기전에 먼저 진행 Static initializer private static final Singleton INSTANCE = new Singleton(); 예제 코드 public class Singleton { //1. 정적초기화문 + 2. private 생성자 -> 유일성 보장 private static Singleton uniqueInstance = new Singleton(); private Singleton() {} // 외부 호출 (new Singleton() 불가) // 3. 모든 client 가 사용할 global access point 제공 public static Singleton getInstanc.. 2021. 10. 8.
Singleton 패턴 클래스의 인스턴스가 하나만 있는 것 | Design Pattern 디자인 패턴 디자인 패턴 Design Patterns 패턴이란 특정 context 내에서 주어진 문제에 대한 solution 이다. 문맥) 반복적으로 발생하는 상황 문제) context 내에서 이루고자 하는 목적과 제약 조건(constraint) 해결) 문제를 해결하는 일반적인 설계 디자인패턴 중 하나인 싱글톤 패턴 그 전에 " singleton " 에 대한 용어부터 알아보자. Singleton 1. (단독) 개체 2. 독신자 3. 외둥이(단일아) 출처 : 네이버사전 어떤 클래스의 인스턴스 갯수를 오직 하나로 제한하는 패턴 시스템 전체의 행동을 조정해주는 단 하나의 객체가 필요할 때 중앙집중적인 관리 Singleton Pattern : JVM 내에서 클래스의 인스턴스가 하나만 있는 것 어떤 클래스의 instance가.. 2021. 10. 5.
java spring 커넥션 풀 , jdbcTemplate 1. 컨테이너 초기 설정 또는 1_1 자파 파일로 만들기 @Configuration public class DBConfig { @Bean public ComboPooledDataSource dataSource() throws PropertyVetoException { ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver"); dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSource.setUser("scott"); dataSource.setPassword("tiger").. 2020. 8. 13.
java spring 세션 & 쿠키 세션 일반적인 로그인 상태 유지, 장바구니 등의 기능 1. HttpServletRequest @RequestMapping(value = "/login", method = RequestMethod.POST) public String memLogin(Member member, HttpServletRequest request) { Member mem = service.memberSearch(member); HttpSession session = request.getSession(); session.setAttribute("member", mem); return "/member/loginOk"; } 2. HttpSession @RequestMapping(value = "/login", method = Reque.. 2020. 8. 10.
java spring 프로젝트 생성과 실행 기초 1. 메이븐 프로젝트로 생성 2. pom.xml 4.0.0 spring4 test1 0.0.1-SNAPSHOT org.springframework spring-context 4.1.0.RELEASE maven-conpiler-plugin 3.1 1.8 1.8 utf-8 3. src/main/resources/applicationContext.xml 4. 메인클래스에서 컨테이너에 있는 빈 불러 오기 public static void main(String[] args) { // TransportationWalk t = new TransportationWalk(); // t.move(); //Xml 불러옴 GenericXmlApplicationContext ctx = new GenericXmlApplicati.. 2020. 7. 21.
Android studio (안드로이드 스튜디오) Layout에 View 동적 생성(추가)으로 전화번호부 만들기 1 view = layoutInflater.inflate(R.layout.layout_complex, null, false); //사진 ImageView imageView = view.findViewById(R.id.item_image); imageView.setImageResource(imageList.get(i)); //이름 TextView nameText = view.findViewById(R.id.item_name); nameText.setText(nameList.get(i)); //번호 TextView phoneText = view.findViewById(R.id.item_phonenum); phoneText.setText(phoneList.get(i)); container.addView(view).. 2020. 3. 2.