반응형
저의 일본 IT 취업의 기록을 담은 포스트로 제 블로그에 들어오는 분들이 많으셔서 일본 IT 취업의 얘기를 해보려 한다. 국비교육을 받은 비전공자의 취업 현실 비전공자들은 소위 국비교육을 통해 IT 업계에 발을 담구는 케이스가 많다. 국비교육을 통한 비전공자의 취업은 현실적으로 SI 회사에 가게될 가능성이 높다고 생각한다. 전공자들은 대학교 4년에 걸쳐 CS, 알고리즘, 네트워크 등등 바탕이되는 전반적인 지식들을 배우지만 국비교육은 대부분 java 등의 개발언어를 조금 배우는 정도일 것이다. 그러니 당연히 다를수 밖에 없다. 국비교육 몇개월 받고서는 전반적인 지식까지 공부해온 전공자들과 비교할 수 없는게 당연하다. 그래서 SI 업체에 입사해 하위공정에서 구르게될 가능성이 높아진다. 물론 100% 모든 비..
💡 상태 패턴 , 스테이트 패턴 (state pattern) 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. ■ 예제 : 뽑기 자판기 (1) 요구사항 "다음과 같은 방식으로 작동하는 뽑기 기계의 자바코드를 작성해주세요. 나중에 다른 기능을 추가할 가능성도 있으니 최대한 유연하고 관리하기 용이한 디자인으로 해줬으면 합니다." 상태 다이어그램을 바탕으로 상태를 정의하자. 상태정의 No Coin : 돈이 넣어져있지 않은 상태 Has Coin : 돈 넣어진 상태 Sold : 판매중의 상태 Sold Out : 매진 상태 (2) 문제인식 1. 다음과 같이 뽑기 자판기를 작성하면 될 것 같다. public class GachaMachine..
💡 파사드 패턴 (Facade Patter) 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. ■ 예제 : 홈씨어터 홈씨어터에는 앰프, 스크린, 조명, 프로젝터, 팝콘 기계 등이 존재한다. 클래스가 매우 많다. 이 클래스들은 서로 복잡하게 연결되어 있고, 제대로 쓰려면 많은 비용이 든다. 영화를 보려면 popconPopper.on(); // 팝콘 기계를 켠다. popconPopper.pop(); // 팝콘 튀긴다. light.dim(20); // 조명을 20% 로 조절한다. screen.down(); // 스크린을 내린다 amp.on(); // 앰프를 켠다 streamingPlayer.play()..
💡 어댑터 패턴 (Adapter Pattern) 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터 페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. Wrapper 클래스가 다른 인터페이스를 가지더라도 같이 이용할 수 있게 래핑 클래스를 만드는 것. 전기 콘센트를 생각하면 이해하기 쉽다. 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. Wrapper 로 이용함으로서 클라이언트와 구현된 인터페이스를 분리시킬 수 있으며, 향후 인터페이스가 바뀌더라도 어댑터에 캡슐화되기 때문에 클라이언트는 바꿀 필요가 없어진다. ■ 예제 : 오리 어플리케이션에 칠면조 추가하기 요구사항 오리 어플리케이션의 현재 시스템에는..
💡 팩토리 메소드 패턴 (Factory Method Pattern) 객체를 생성하기위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들어지는 서브클래스에서 정하게 만든다. 즉, 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것 💡 추상 팩토리 패턴 (Abstract Factory Pattern) 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성 1. 간단한 팩토리 (Simple Factory) 1) 문제인식 다음과 같이 new 키워드를 이용하면 인터페이스가 아닌 특정 구현을 사용하게 된다. Pizza pizza = new CheesePizza(); // Pizza pizza : 인터페이스를 써서 유연하게 만드려고 한다..
1. 커맨드 패턴 정의 💡 커맨드 패턴 (command pattern) 요구사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을수 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할수 도있으며 작업취소 기능도 지원가능 하다. 커맨드 객체는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구사항을 캡슐화한다. 이렇게 하기 위해 행동과 리시버를 한 객체에 집어넣고 메소드 하나만 외부에 공개하는 방법을 사용한다. 식당을 예로 들면 1. 손님이 웨이터에게 주문을 한다. 2. 점원이 고객의 주문을 주문서에 적는다. 3. 점원은 주문서를 주방에 전달하여 주문을 요청한다. 4. 요리사는 주문서에 적힌 주문대로 음식을 자신의 노하우로 만든다. 손님 = Client 점원 = Inv..