일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- c3 초
- g++ 업데이트
- CentOS7
- snmp test
- python popen
- telegraf
- selinux port 등록
- influxdb 설치
- gcc 업데이트
- python os
- subporcess path
- regex_search
- c3 step graph
- 정규식 활용
- 정규식 컴파일
- c3 축 없애기
- InfluxDB
- 정규식 문자열 출력
- c++ 정규식
- gcc regex
- semanage
- snmp
- 백준
- linux시간으로 변경
- centos pyhon 설치
- python subprocess
- 1697
- c3 second
- c3 축 가리기
- grafana dashboard
- Today
- Total
목록Java(폐지)/디자인 패턴 (9)
리셋 되지 말자
전략 패턴의 구성요소 전략 메서드를 가진 전략 객체 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자) 클라이언트는 다양한 전략 중 하나를 선택해 생성한 후 컨텍스트에 주입한다. 예시 - 군인 군인과 군인 사용할 무기와 군인을 지휘하는 장교가 있다고 가정한다. 여기서는 군인이 컨텍스트, 무기가 전략 객체, 장교가 클라이언트다. 이를 코드로 나타내면 아래와 같다. Strategy.java package strategyPattern2; public interface Strategy { public abstract void runStrategy(); } StrategyGun.java package strategyPatter..
책보다 설명이 잘 되어 있어서 링크 남김. https://victorydntmd.tistory.com/292 https://meylady.tistory.com/53?category=795226 전략 패턴 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말합니다. 간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴입니다. 예시 코드 MovableStrategy.java package strategyPa..
팩토리 메서드 패턴 팩토리 메서드는 객체를 생성 반환하는 메서드를 말한다. 여기에 패턴이 붙으면, '하위 클래스에서 팩토리 메서드를 오버라이딩하여 객체를 반환하게 하는 것'을 의미한다. 예시 코드 Coffee.java package factoryMethodPattern; public abstract class Coffee { public abstract String getName(); } Americano.java package factoryMethodPattern; public class Americano extends Coffee{ public String getName() { return "Americano"; } } Moka.java package factoryMethodPattern; publi..
템플릿 메서드 패턴:템플릿 메서드와 훅(hook) 메서드가 존재하는 패턴 템플릿 메서드 상위 클래스에 공통 로직을 수행하는 메서드 훅(hook) 메서드 선택적으로 오버라이딩할 수 있는 메서드 예시 코드 Animal.java package templeteMethodPattern; public abstract class Animal { // 템플릿 메서드 public void playWithOwner() { System.out.println("이리온"); play(); runSomething(); System.out.println("잘했어"); } // 추상 메서드 abstract void play(); // hook 메서드 void runSomething() { System.out.println("꼬리 흔..
싱글톤 패턴 싱글톤 패턴은 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 오직 하나의 인스터스만을 만들고 그것을 계속 재사용한다. 싱클톤 패턴을 적용할 경우 의미상 두 개 이상의 객체를 가질 수 없으므로 아래의 세 가지가 필요하다. new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정 유일한 단일 객체를 반활할 수 있는 정적 메서드가 필요 유일한 단일 객체를 참조할 정ㅈ거 참조 변수가 필요 예제 코드 Singleton.java package singletonPattern; public class Singleton { static Singleton singletonObject; //정적 참조 변수 private Singleton() {}; //private 생성자 // 객체 반환 정적 ..
프록시 패턴 vs 데코레이터 패턴 프록시 패턴은 실제 서비스 메서드의 결과값에 영향을 주지 않지만, 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 더한다. 프록시 패턴 제어의 흐름을 변경하거나 별도의 로직 처리를 목적으로 한다. 클라이언트가 받는 반환값을 특별한 경우가 아니면 변경하지 않는다. 데코레이터 패턴 클라이언트가 받는 반환값에 장식을 더한다. 예시 코드 IService.java package decoratorPattern; public interface IService { public abstract String runSomething(); } Service.java package decoratorPattern; public class Service implements IService{ p..
프록시란 프록시는 대리자, 대변인이라는 뜻을 가진다. 다른 누군가를 대신해 그 역할을 수행한다고 할 수 있다. 프록시가 없는 예제-runSomething() 메서드르 직접 호출 Service.java package proxyPattern; public class Service { public String runSomething() { return "Service!!"; } } ClientWithNoProxy.java package proxyPattern; public class ClientWithNoProxy { public static void main(String args[]) { Service service = new Service(); System.out.println(service.runSome..
어댑터를 번역하면 변환기(converter)라고 할 수 있다. 변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다.(ex 플러그 전원과 핸드폰을 연결해주는 충전기-충전기가 변환기의 역할을 수행) ODBC/JDBC가 어댑터 패턴을 이용해 다양한 데이터베이스 시스템을 단일한 인터페이스로 조작할 수 있게 한다. JRE 또한 어댑터 패턴이다. 결국 어댑터 패턴은 개방 폐쇄 원칙(OCP)를 활용한 설계 패턴이라고 할 수 있다. 어댑터 패턴이 적용되지 않은 코드 ServiceA.java package adapterPattern; public class ServiceA { void runServiceA() { System.out.println("ServiceA"); } } ServiceB.j..