본문 바로가기

Happyer16

(214)
디자인 패턴6 - 옵저버 패턴(Observer pattern) 옵저버 패턴(Observer pattern)뜻을 보면 뭔가 변화가 발생하면 어떠한 행위를 해야할 때 쓰는 패턴 같아 보인다. 즉, 한 객체의 변화에 따라 다른 객체의 상태도 연동되도록 1:다 객체 의존관계를 구성할 때 사용된다. 데이터 변경이 일어나면 어떠한 행위가 일어나야 한다. 만약에 생각없이 코딩을 한 경우 아래와 같이 짤 것이다. onChanged() { // 변경이 일어난 경우class1.function();class2.function();....} 이렇게 되면 1. class1의 function()이 변경된 경우 해당 클래스까지 수정해야 되므로 OCP에 위반된다.2. 변경이 일어난 경우 어떠한 행위를 추가해야 한다면??? 해당 클래스 전체가 바뀌어 버린다..... ( 말도 안되는 재사용성.....
디자인 패턴5 - 컴포지트 패턴 ( Composite pattern ) 디자인패턴5 - 컴포지트 패턴 (Composite pattern )이것도 단어 뜻을 그대로 살펴보면 composite(복합물) 패턴? 또 뭔가 조합을 하는 패턴인 것 같다. 사용자(클라이언트)가 어떠한 조합으로 생성 된 클래스를 동일하게 사용할 때 쓰는 패턴이다. 말만 보면 항상 와닿지 않는다. public class Keyboard { private int price; private int power; public Keyboard(int power, int price) { this.power = power; this.price = price; } public int getPrice() { return price; } public int getPower() { return power; }}public c..
디자인 패턴4 - 템플릿 메소드 패턴이란(Template method pattern) 템플릿 메소드 패턴이란?이것도 뜻만 살펴 보면 템플릿? 뭔가 양식을 정해놓고 메소드? 함수를 이용하는 패턴일까 싶다. 어떤 작업을 처리하는 방식은 서브 클래스로 빼두어서 구조는 바뀌지 않고 특정 수행하는 내역을 바꾸는 패턴이라고 한다. 템플릿 메소드 패턴 예제자동차 시동에 관한 것을 예제로 들겠다. 1. 모터가 돌고2.불이 들어오고3. 등등등 이 상황에서 현대차와 BMW 자동차를 구현해야 한다면? 아무 생각 없이 구현한다면 현대차 클래스에 boot() { .// 1,2,3 동작 } BMW차 클래스에 boot() {.// 1,2,3 동작 } 이런식을 할 것이다. 이렇게 구현이 되면 중복된 코드가 발생한다! 하지만 1번과 같이 구현체만 다르고 전체 동작 방식이 같다면 자동차 클래스를 아래처럼 만들자. pub..
디자인 패턴3 - 데코레이터 패턴 데코레이터 패턴이란?단어 뜻 그대로 살펴보면, 뭔가 꾸밀 때 사용해야하는 패턴같다. 즉, 객체의 결합을 통해 기능을 확장(꾸미기)위해 사용되는 패턴이다. 데코레이터 패턴 예제햄버거로 간단하게 예제를 들겠다. 기본 기능 : 빵추가 기능 : 고기 / 야채 / 토마토 / 치즈 등등등 아무 생각 없이 클래스를 만든다면 저 조합들에 맞는 객체들을 모두 만들어야 할 것이다.... 생각만해도 유지보수 하기 싫어진다. ----------------------------- 데코레이터 패턴에서는 추가 기능 1개당 1 클래스를 만들어서 객체의 조합을 이용한다. 추가와 조합하기가 이제 용이해졌다. 참고 : https://gmlwjd9405.github.io/2018/07/09/decorator-pattern.html
Window(윈도우) 개발환경 꾸미기 Putty 좀 이쁘게 쓰고 싶다1. oh my zsh 설치하기https://the-illusionist.me/47 2. theme 변경하기저는 maran 3. 유용한 플러그인1) auto suggestions : 내가 사용했던 명령어 자동완성https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh 적용이 안되거나 에러가 나는경우$zsh
디자인 패턴2 - 어댑터 패턴(Adapter Pattern) 어댑터 패턴 (adapter pattern)이란?항상 110V, 220V 변환기로 비유를 많이 든다. 하지만 나는 정확히 와닿지가 않았다. 좀더 코드단의 예로 들면, 프로젝트에서 검색엔진 A를 사용하고 있었다. A의 search()함수와 이를 이용하여 분석하는 비즈니스 코드가 있을 것이다. 하지만, 검색엔진 B가 더 좋다고 판단되어 수정을 한다면? ( 표준화는 되어있지 않을 것이기 때문에 A,B의 사용방법이나 함수는 무조건 다를 것이다 ) 어댑터 패턴 예제1음악 파일과 음악 재생기로 예제를 살펴보자. interface MediaPlayer { void play(String filename); } interface MediaPackage { void playFile(String filename); } cl..
디자인 패턴 1 - 파사드 패턴(facade pattern) Facade란?건물의 외간이란 뜻이다. Facade Pattern다른 인터페이스들을 통합하여 단순화 시킬 때 사용하는 패턴이다. 아래는 컴퓨터가 켜질 때 필요한 동작들을 하나의 인터페이스에 정의한 예제이다./* Complex parts */ class CPU { public void freeze() { ... } public void jump(long position) { ... } public void execute() { ... } } class Memory { public void load(long position, byte[] data) { ... } } class HardDrive { public byte[] read(long lba, int size) { ... } } /* Façade */ ..
React vs Vue 잘 정리되어 있는 기사가 있어 가져왔습니다 https://joshua1988.github.io/web_dev/vue-or-react/
Persistence Framework에 관하여 ( 장,단점 ) ORM이란?객체 데이터베이스 데이터 자동 매핑 ( Object Relational Mapping ) Persistence란?데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터 Persistence Framework?데이터베이스와의 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해주는 프레임워크 종류SQL Mapper : SQL문장으로 직접 데이터베이스 데이터를 다루는 SQL Helper ( Mybatis )ORM : 객체를 통해 간접적으로 데이터베이스를 다루는 ORM ( Hibernate, JPA ) Persistence Framework를 사용하면 좋은 점DBMS에 대한 종속성이 줄어든다.DBMS 교체작업 때 해야할 일이 줄어든다.자바 객체에 매핑되어 있기 때문에 자바의 기능 ( equ..
노드 프로젝트를 깔끔하게 작성하기 기본적인 자바스크립트 깔끔한 코드 작성https://github.com/qkraudghgh/clean-code-javascript-ko변수 이름 짓기 : 깔끔하고 의미 내포함수 한가지 행동알수있는 이름중복 제거매게변수로 플래그 사용 금지조건문을 캡슐화하기명령형 -> 함수형프로그래밍부정 조건문 사용 금지조건문 작성을 피하라객체 & 자료구조클래스단일 책임 원칙 (SRP)개방/폐쇄 원칙 ex : 면적 계산하는 놈 / 원 / 사각형 )인터페이스 분리 원칙의존성 역전 원칙메소드 체이닝을 상요하세여상속보단 조합을 사용하세요테스트동시성Callback => async,await에러 처리단순히 출력만 하지 마세요포맷팅회사에 맞추세요주석주석이 많다는건 코드가 더럽다는 것코드 위치 설명 X코드 기록 남기지 마세요Node C..