언어/Java

· 언어/Java
싱글턴 패턴이란? 인스턴스를 하나만 만들어서 사용하기 위한 패턴 시스템 상 하나만 존재해야 하는 객체, 예를 들어, 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등의 경우 인스턴스가 여러개 존재하게 되면 불필요한 자원을 사용하게 되고, 시스템 전체 설정에 관여하는 객체 인스턴스가 여러개 존재할 경우 객체 별로 다른 변수를 갖게 되는 경우가 생길 수 있다. 싱글턴 패턴 사용시 장점 유일 인스턴스 및 전역 접근 : 싱글턴 패턴을 사용하면 클래스의 인스턴스가 오직 하나만 생성되고, 어디에서든 접근 가능하게 됩니다. 이는 고유한 객체를 생성하고 관리하는 데 유용합니다. 자원 공유: 여러 부분에서 공유 자원을 사용해야 할 때 유용합니다. 예를 들어, 로그 생성, 데이터베이스 연결 풀, 캐시, 설정 관리 등과 같은..
· 언어/Java
데코레이터 패턴이란? 어떤 객체의 메서드에 대하여 기능 추가/변경/제거를 해야 할 때, 같은 메서드를 각기 다르게 구현한 객체의 결합을 통해 메서드를 호출하는 부분을 변경하지 않고 진행할 수 있는 패턴이다. 데코레이터 패턴 사용 시기 메서드 호출의 반환값 중간에 변경을 줘야 할 때 객체 책임과 행동이 동적으로 빈번하게 추가/삭제 되는 경우 객체의 결합을 통해 기능이 생성될 수 있는 경우 객체에서 메서드를 호출하는 코드 부분을 변경하지 않고, 런타임에 객체에 추가 동작을 할당해야 하는 경우 상속으로 해결할 수 없거나 상속 보다 유연한 객체의 기능 확장과 변경이 필요할 때 데코레이터 패턴 사용시의 장점 데코레이터를 사용하면 상속을 사용하여 서로 다른 기능을 하는 자식 클래스들을 만들때보다 훨씬 더 유연하게 ..
· 언어/Java
프록시 패턴이란 프록시는 대리인이라는 뜻으로, 무언가를 대신 처리한다는 의미이다. 어떤 객체를 사용하고자 할 때, 객체를 직접 참조하는 것이 아니라 해당 객체를 대행하는 프록시 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고, 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다. 프록시 패턴 사용 시기 접근을 제어하거가 기능을 추가하고 싶은데, 기존의 특정 객체를 수정할 수 없는 상황일때 초기화 지연, 접근 제어, 로깅, 캐싱 등, 기존 객체 동작에 수정 없이 가미하고 싶을 때 프록시 패턴 사용시 이점 개방 폐쇄 원칙(OCP) 준수 : 기존 대상 객체의 코드를 변경하지 않고 새로운 기능을 추가할 수 있다..
· 언어/Java
어댑터 패턴 서로 다른 두 인터페이스간 통신을 가능하게 하는 디자인 패턴이다. SOLID 원칙 중 개방 폐쇄 원칙을 활용한 설계패턴인데, 이 어댑터 패턴은 사실 Java가 동작하는 근간에 있었다. Java의 동작에 어댑터 패턴이 어디서 어떻게 사용되었는지 보기 전에 먼저 c++과 Java의 컴파일 과정을 살펴보자 c++과 Java의 컴파일과정 객체 프로그래밍을 지원하는 c++에서는 똑같은 로직이 구현된 프로그램을 실행하려면 OS별로 컴파일러가 다르고, 소스코드를 각 컴파일러에 맞게 수정해줘야해서, 소스 코드 내에 32비트의 os로 빌드할때, 64비트의 os로 빌드할때의 두가지의 상황을 하나의 소스코드로 빌드할 수 있도록 개발해야 하다보니 os별로 구현이나 자료형이 달라지는 경우 중복으로 코딩하거나 오버로..
· 언어/Java
다형성이란? 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 하지만 아무 관계도 없는 타입을 참조할 수는 없고, 상속(클래스, 인터페이스 모두) 관계에서 구현 가능하다. 다형성을 활용하면 부모 클래스가 자식 클래스의 동작 방식을 알 필요 없이 자식 클래스에 접근해 필요한 메서드를 실행시킨다. 자식 클래스를 부모 클래스 타입으로 객체를 선언하고 오버라이딩된 메서드를 실행하면 자식 클래스의 메서드가 실행됨. 하지만 부모 클래스를 자식 클래스 타입으로 객체를 선언할 수는 없다. 객체지향의 4가지 특징 중 다형성은 특히나 글로 읽었을 때 이해가 되지 않는 것 같다. 여러 가지 예제와 비유로 다형성을 100% 이해해 보자 먼저, 하나의 객체가 여러 타입을 가지면서 생기는 이점이 있으려면, 오버라이딩..
서병렬
'언어/Java' 카테고리의 글 목록