-
구조 (5) - 퍼사드(Facade) 패턴
퍼사드 : 프랑스어로 건물의 정면을 가르키는 말 인터페이스를 간단하게 변경하는 패턴 커다한 코드 부분에 대해 간략한 통합 인터페이스를 제공하는 패턴 인터페이스를 통해 접근함으로써 내부 코드에 대한 의존성을 줄여 준다 용어 Facade : 사용자의 요청을 서브시스템에 전달하는 통합 인터페이스 Subsystem classes : 서브시스템 로직 클래스 구현 Facade public class WashingMachine { private final Wash wash; private final Rinse rinse; private final Dry dry;...
-
구조 (4) - 컴포지트(Composite) 패턴
객체들의 관계를 트리구조로 구성하여 부분-전체 계층을 표현하는 패턴 클라이언트가 단일객체, 복합객체 구분 없이 동일하게 다루는 것이 가능하게 해준다 용어 Component : 모든 Component의 추상화 인터페이스 Leaf : 구체적인 부분 클래스 Composite : 전체 클래스 Component 리스트로 가지고 있음 구현 Component public abstract class ComputerParts { public abstract int getPrice(); public abstract int getPower(); } ...
-
생성 (4) - 추상 팩토리(Abstract Factory) 패턴
서로 관련있는 여러 객체를 캡슐화해 한번에 만들어주는 인터페이스를 제공 용어 Abstract Product : 제품의 공통 인터페이스 Concrete Product : 팩토리에 의해 생성될 구체적인 객체 Abstract Factory : 팩토리 클래스의 공통 인터페이스 Concrete Factory : 구체적인 팩토리 클래스 구현 Product public interface Keyboard { } public class SamsungKeyboard implements Keyboard { public SamsungKeyboard(){ System.out...
-
생성 (3) - 팩토리 메서드(Factory Method) 패턴
상위 클래스는 인터페이스이며 구체적인 객체의 생성은 하위 클래스에게 위임 템플릿 메서드와 매우 비슷하며 템플릿 메서드 패턴의 생성버전이라고 생각할 수 있다 객체 생성 클래스를 분리하여 기존 코드를 수정하지 않고 변화에 확장하기 위한 패턴 용어 Product : 팩토리 메서드로 생성될 객체 Creator : 팩토리 메서드 클래스 Concrete Creator : 실제 객체를 생성하는 하위 클래스 구현 Product public interface User { void signup(); } public class GoogleUser implements User { ...
-
brew로 old version 설치하기
최신 버전이 아닌 old 버전의 패키지를 설치 해야 할 때가 있다. 하지만 태그(ex mysql@5.7)를 제공하지 않는 패키지는 brew를 통해 설치할 수 없는데, 직접 설치 루비스크립트를 받아 파일을 통해 설치가 가능하다. homebrew-core 깃허브 이동 https://github.com/Homebrew/homebrew-core/tree/master/Formula Go to file로 파일 탐색 해당 패키지의 history에서 원하는 버전 선택 Raw 버튼을 눌러 해당 파일로 이동 cmd+s로 루...