본문 바로가기

전체 글57

프로토타입 (Prototype) 패턴 정의 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 자신을 복제 (clone) 프로토타입 패턴을 사용하는 이유 기존 객체를 응용해서 새로운 객체를 만들때 예를 들어, 데이터베이스에서 데이터를 읽어와서 인스턴스를 생성하거나 네트워크를 거쳐서 http 요청을 보내서 가져온 데이터 기반으로 인스턴스를 만드는 경우 ⇒ 인스턴스를 만들때마다 오래걸리고, 자원도 많이 사용하게 되는 경우 java의 clone 메소드를 알아보자. 기본적으로 java에서 지원하는 clone 메소드는 ‘얕은 복사 (shallow copy)’ 를 지원함. 얕은 복사 (shallow copy) 란 ? 주소 값을 복사함. 깊은 복사 (deep copy) 란 ? 실제 값을 새로운 메모리 공간에 복사함. 장점 복잡한 객체 생성 과정을 c.. 2022. 5. 22.
메멘토 (Memento) 패턴 정의 ? 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장하는 방법. Originator : 원래의 데이터를 가진 객체. CareTaker : Originator의 내부정보를 Memento라는 타입으로 가지고 와서 저장하고 있음. Memento : Originator 객체의 추상화 객체. 따라서 Originator는 두 가지의 operation을 제공해야함. createMemento() : 내부정보를 Memento 클래스로 추상화해서 전달함. restore(Memento) : 외부에서 전달받은 Memento 정보로 자신의 정보를 복원함. 또한, Memento 는 변경불가능한 객체로 구성하여 Originator의 정보를 CareTaker에 전달함. 예제 /* Memento.class * 객체의 값이 변경되.. 2022. 5. 22.
싱글톤 (Singleton) 패턴 구현 private 생성자와 static 메소드를 이용한 방법 단점 → 멀티 스레드 환경에서 동시에 여러 스레드가 들어왔을때 동시에 new 키워드를 통해 서로 다른 인스턴스를 생성할 수 있다. synchronized 키워드 사용하는 방법 : static 메소드를 synchronized static 메소드로 변경하는 방법 public class Settings { private static Settings instance; private Settings(){ } public static synchronized Settings getInstance(){ if(instance == null){ instance = new Settings(); } return instance; } } 장점 → 동시에 여러 스레드.. 2022. 5. 22.
NPX npx 명령어 : npm을 전역으로 설치하지 않아도 바로 쓸수있음. npx 는 npm 에 새로 추가된 도구로, npm을 더 편하게 쓰기 위함. (npm 5.2.0 이상 버전이면 사용가능) npx는 npm 레지스트리에 올라가 있는 패키지를 쉽게 설치하고 관리하는 CLI 도구. npx는 npm을 통해 설치하는 모든 종류의 Node.js 기반 파일들을 간단하게 설치하도록 도와줌. npm = Package Manager(관리) npx = Package Runner(실행) [ ref. 왜쓰는지 :: https://webruden.tistory.com/275 ] 2022. 5. 1.
[JavaScript] 전개 연산자 (스프레드 연산자) 객체 리터럴에 스프레드 속성을 추가한다. 제공된 객체의 자체 열거 가능 속성을 새 객체에 복사한다. var obj1 = { foo: 'bar', x: 42}; var obj2 = { foo: 'baz', x: 13}; var cloneObj = { ...obj1 }; // Object { foo: "bar", x: 42 } var cloneObj = { ...obj1, ... obj2 }; // Object { foo: "baz", x: 42, y: 13 } 2022. 5. 1.
API, UI, UX API (Application Progamming Interface) 응용프로그램 인터페이스 프로그램과 다른 프로그램을 연결해주는 역할이다. -> 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스다. -> 만약 내가 daum지도를 사용해서 웹을 만들때 그냥 daum이 지도에 대한 데이트를 공개만 한다면 양이 방대하고 호환성 문제도 있어서 유용하게 사용하기 어려울 것이다. 하지만 daum지도API를 제공한다면, 데이터를 활용할 수 있도록 인터페이스를 제공하기 때문에 유용하게 쓸 수 있다. UI (User Interface)와 UX (User Experience) UI -> 사용자가 마주하는디자인(폰트 칼라), 레이아웃 기술적인 부분(반응성, 입출력단계, 애니메이션효과) UX ->.. 2022. 5. 1.