본문 바로가기

✨ Java57

자바(JAVA) - 팩토리 패턴(Factory) 팩토리 패턴이란? 객체를 생성하는 인터페이스는 미리 정의하되, 인스턴스를 만들 클래스의 결정은 서브 클래스 쪽에서 내리는 패턴. 즉, 여러 개의 서브클래스를 가진 슈퍼 클래스가 있을 때 인풋에 따라 하나의 자식 클래스의 인스턴스를 리턴해주는 방식 1. 인터페이스 정의하기 2. 여러 클래스 구현하기 3. 쥬스 공장 클래스 생성하기 4. 메인 클래스에서 쥬스공장 생성후 찍어보기 결과창 장점 유연성과 확장성 - 새 제품을 추가, 변경시 기존 코드 수정하지 않아도됨. 클라이언트 코드 분리 중복코드 제거 - 객체 생성 코드가 여러 곳에서 중복되지 않도록 한다면, 객체 생성에 불필요한 중복코드 제거 단점 복잡성 증가 - 이 패턴은 추가적인 클래스를 도입하므로, 코드의 복잡성이 증가할 수 있다. 추상화 비용 많은 클래스 2023. 8. 20.
자바(JAVA) - 템플릿 메소드 패턴(Template Method Pattern) 템플릿 메소드 패턴이란? 객체지향 프로그래밍에서 사용되는 설계 기법 중 하나로, 상위 수준의 알고리즘을 정의하고 하위 클래스에서 알고리즘의 일부 단계를 구체화할 수 있도록 하는 것이 목적. 템플릿 메소드 패턴은 추상 클래스를 사용한다. 부모 클래스에게 추상화를 시켜 이를 상속받은 자식 클래스에서 구체화하면서 완성할 수 있다. 즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들고, 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 상위의 메소드 실행 동작 순서는 고정하며 세부 실행 내용은 다양화 될 수 있는 경우에 사용. 코드의 중복을 없애기 위함. Animal.class ( 부모 클래스를 추상 클래스로 만들어준다.) 부모 클래스역할을 하는 Animal 클래스에 하나 이상의 추상 메소드를 만들.. 2023. 7. 26.
자바(JAVA) - String, StringBuffer, StringBuilder 각 성능차이 String 불변(immutable) 문자열을 조작하는 경우 유용하게 사용가능하다. 한번 생성되면 할당된 메모리 공간이 변하지 않는다. 문자열을 연결, 추가, 수정, 삭제 등을 하면 새로운 String 객체 생성 -> 메모리 낭비 스레드 안전함. 동기화 처리되어 있어 멀티스레드 환경에서도 안전하게 사용가능. (즉 , + 연산자 , concat 메서드를 통해 본래 문자열에 다른 문자열을 붙여도 기존 문자열에 새로운 문자열을 붙이는 것이 아니라, 새로운 String 객체를 만든 후, 새 String 객체에 연결된 문자열을 저장하고, 그 객체를 참조하도록 한다. ) 위 코드는 String 문자열을 이용하여 문자열을 추가해주었다. 이는 문자열이 변경되는 것처럼 보일 수 있으나, 또 다른 String 객체를 생성.. 2023. 7. 24.
자바(JAVA) - 직렬화(Serialization) 직렬화란? 객체 인스턴스의 데이터를 I/O스트림에 적합한 일련의 데이터로 변환하는 과정이다. 객체 인스턴스는 메모리 주소 값을 저장하고 있기 때문에, 메모리 주소 값을 그대로 송신하면 수신받는 쪽에서 아무 쓸모 없는 데이터가 된다. 따라서 객체 인스턴스의 값 형태로 변환이 필요하다. MemberClass HTML 삽입 미리보기할 수 없는 소스 클래스 객체에 직렬화를 가능하게 하려면, Serializable 이라는 인터페이스를 구현해야한다. Main메서드 HTML 삽입 미리보기할 수 없는 소스 I/O Stream을 통해 직렬화 객체를 입출력해보았다. transient : 직렬화 대상 제외 MemberClass 만약, 직렬화하려는 클래스에서 제외하고 싶은 필드가 있다면, transient를 붙여 직렬화 대상.. 2023. 7. 24.