프로그래밍 294

Design Pattern을 공부해보자 3탄

Design Pattern을 공부해보자 커맨드 패턴 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어 넣을 수도 있다. 또한, 요청 내역을 큐에 저장하거나 로그로 기록 할 수 있으며, 작업 취소 기능도 지원 한다. 커맨드 패턴 코드 어댑터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면, 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴에서는 2가지가 존재한다. 객체 어댑터 클래스 어댑터 Java에서는 다중 상속을 지원하지 않기에, 클래스 어댑터는 적용할 수 없습니다. 퍼사드 패턴 어떤 서브 시스템의 일련의 인터페이스에 대한 통합된 인터..

Design Pattern을 공부해보자 2탄

Design Pattern을 공부해보자 추상 팩토리 패턴 서로 연관된 또는 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공한다. 구상 클래스는 서브 클래스에 의해 만들어 진다. 추상 팩토리 패턴은 예시 코드로 치면, 먼저 피자의 지점에 따른 피자가 공통적인 피자라는 점에는 같지만, 속재료에 차이에 대해 집중하는 편이다. 그런 점에서 팩토리 메소드 패턴과는 다르다. 물론, 이용할 수는 있으나, 결론적으로 차이는 추상 팩토리 패턴은 상속을 통한 확장이 아닌, Composition을 통해 확장을 해나가는 패턴이다. 추상 팩토리 패턴 코드 팩토리 메소드 패턴 객체를 생성하기 위한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브 클래스에서 결정하도록 합니다. 팩토리 메소드를 이용하..

Design Pattern을 공부해보자 1탄

Design Pattern을 공부해보자 Strategy Pattern 전략 패턴은 쉽게 말해 확장성을 위하여 관심을 분리 시키는 것인데, 관심 분리를 하는 초점이 바로 객체의 행동이다. 객체의 다양한 행동을 위해 분리를 하는데 전제 조건은 특정 객체는 하는데 다른 객체는 그 행동이 필요하지 않을 수 있다. 고로, 객체마다 달라지는 부분과 달라지지 않은 부분을 분리 시키고 해당 코드들을 특정 군으로 모으는 것이다. 그래서 내가 필요로 할 때 추상화 된 기능을 구현하고, 실제 사용하는 측에서는 구현한 클래스에게 해당 기능을 위임 시키는 형태로 만든다. 그래서 내가 어떤 전략을 취하느냐에 따라 해당 객체가 특정 기능을 사용할지 말지 또한 결정 할 수 있게 된다. 전략 패턴 - code Observer 패턴 옵..

Top 10 Mistakes Java Developers Make

Top 10 Mistakes Java Developers MakeTop 10 Mistakes Java Developers Make자바 개발자가 가장 자주 실수하는 10가지에 대해 알아보자.1. ConvertArray To ArrayList배열을 ArrayList로 변환할때, 개발자들은 종종 이렇게 한다 :List list = Arrays.asList(arr); Arrays.asList() Arrays 안에 있는 private static class ArrayList를 반환 할 것이다. 그리고 그것은 java.util.ArrayList 클래스 안에 있는 것이 아니다. 그것은 java. util.Arrays.ArrayList 클래스 set() , get (), contains() 메소드들을 가지고 있다. 그..

Ruby 문법 배우기

Ruby를 공부해보자 Ruby 기초 Ruby언어는 객체지향을 완벽하게 지원하는 언어이자 Meta Programming을 지원하는 언어이다. 그리고 동적타이핑을 사용하며, 루비의 자료형 검사는 실행시간에 수행된다는 특징을 가진다. 어떤 코드를 실행하기 전까지는 형 검사를 수행하지 않는다. 변수 x=4 p false.class #ruby에서는 거의 대부분이 객체로 처리됨 puts 'This is Ruby' unless x == 4 puts 'This is Ruby' if x == 4 루비는 인터프리터 언어이기에 ‘그냥’ 할당하면 된다. Type은 알아서 매겨준다. 출력 puts 'hell, world' language= 'ruby' puts "hello, #{language}" '따옴표의 경우 문자열 그대로..

자바스크립트 핵심 가이드 - 나쁜 점들 정리

== 연산자 자바스크립트에서 비교 연산자는 다음과 같습니다. == != === !== 다만, 차이가 조금 있다는 것입니다. 하지만, 자바스크립트 핵심 가이드에서는 ===를 사용하도록 권고하고 있습니다. 이유는 === 연산자는 같은 데이터 타입이고, 같은 값일 때 참값입니다. 하지만, == 연산자는 다른 데이터 타입이라면, 타입을 변환하여 비교 연산을 하게 됩니다. 이는 굉장한 손해일 수 있기에 사용하지 않는 것을 권한다는 생각을 합니다. with 문 이는 잘 못보셨으리라 생각합니다. 못 본 이유는 안 좋기 때문이죠. eval 이 또한, 쓰지 않는 것이 좋습니다. 문자열을 자바스크립트 컴파일러에 전달하고나서 결과를 실행하는 함수입니다. 고로, 인수에 대한 문자열에 의존적이고, 권한이 있어 다소 위험합니다...

자바스크립트 핵심 가이드 - 코드 가이드

왜 코딩 가이드가 필요한가? 잠시만, 생각을 해보도록 하죠. 이는 @Seungdols의 개인적인 생각입니다. 저는 주로 자바 언어를 사용하는 개발자입니다. 자바는 C와 비롯해 블록 스코프를 지원하는 언어입니다. 대개 이런 형태를 띄게 됩니다. if ( seungdols.equals("seungho") ){//K&R 스타일 } if ( seungdols.equals("seungho") ) { } 위 코드처럼 블록을 감싸야 하는 if, for, while, do-while...etc등등 많습니다. 하지만, 어떻게 스타일을 가져가는가? 또한, 가독성이 걸린 중요한 문제라고 생각합니다. 결국, 개발은 혼자 해낼 수 없습니다. 좋은 프로그램은 명확한 가시성을 갖게 됩니다. 이 말은 곧 가독성이 좋아진다는 말이겠죠..

JavaScript 핵심 가이드 - 배열

Array란 배열으로 번역을 하고, 데이터 구조 중 하나입니다. 가장 흔하게 사용하는 구조이며, 빠른 접근성의 특성을 가지고 있습니다. 하지만, 자바스크립트에서는 배열은 그렇게 빠른 데이터 구조는 아닙니다. 대신, 배열과 유사한 특성을 갖는 객체를 제공합니다. 물론, 속도적인 측면에서는 굉장히 느린 점이 단점입니다. 자바스크립트는 배열 첨자를 문자열로 변환하여 속성을 만들게 됩니다. var empty = []; var numbers = ['zero','one','seungdols','creatijin']; numbers[2]//seungdols numbers.length; // 4 empty.length; // 0 var number_obj = { '0':'zero', '1':'one' }; //numb..

반응형