
싱글톤패턴

<< 기호는 2진수의 leftshift


1️⃣ 우연적 응집도 (Coincidental Cohesion) ❌ 가장 낮음 (최악)
관련 없는 기능들이 한 모듈에 우연히 묶여 있음.
2️⃣ 논리적 응집도 (Logical Cohesion)
같은 종류의 작업이지만, 실행 시점에 따라 다른 기능을 수행 (조건문으로 분기).
3️⃣ 시간적 응집도 (Temporal Cohesion)
같은 시점(예: 프로그램 시작/종료)에서 실행되는 기능들이 모여 있음.
4️⃣ 절차적 응집도 (Procedural Cohesion)
실행 순서가 정해진 기능들이 모여 있지만, 하나의 기능에 집중되어 있지는 않음.
5️⃣ 통신적 응집도 (Communicational Cohesion)
같은 데이터를 사용하지만, 수행하는 기능이 다를 수도 있음.
6️⃣ 순차적 응집도 (Sequential Cohesion)
한 기능의 출력이 다음 기능의 입력으로 직접 연결됨.
7️⃣ 기능적 응집도 (Functional Cohesion) ✅ 가장 높음 (최고)
모듈이 하나의 명확한 기능만 수행.

REVERSE + 2칸씩출력


key word - subnet mask
192.168.35.0 , 192.168.35.255는 사용안함
192.168.35.0은 이 네트워크 전체를 의미
호스트 부분이 전부 11111111(255) → 모든 호스트에게 패킷을 보낼 때 사용 네트워크 내 모든 장치가 이 패킷을 받음 (브로드캐스트)
예: 192.168.35.255는 192.168.35.0/24 네트워크에서 모든 호스트에게 전송되는 주소
/22인경우는 뒤에 0이 2개남음 0~255개 총 x3개로 사용가능
11111111.11111111.11111100.00000000

객체를 생성하는 방식에 대한 패턴으로, 객체 생성 로직을 캡슐화하여 유연성을 높임.
✅ Singleton (싱글톤 패턴)
설명: 특정 클래스의 인스턴스를 하나만 생성하고, 전역적으로 접근할 수 있도록 하는 패턴
사용 예시: 데이터베이스 연결, 설정 관리, 로깅 시스템
✅ Factory Method (팩토리 메서드 패턴)
설명: 객체 생성 코드를 서브클래스에서 구현하도록 위임하는 패턴
사용 예시: 다양한 종류의 객체 생성이 필요한 경우 (예: 문서 편집기에서 다양한 파일 형식 지원)
✅ Abstract Factory (추상 팩토리 패턴)
설명: 관련된 객체 군을 생성하는 팩토리 메서드들의 집합을 제공하는 패턴
사용 예시: GUI 라이브러리에서 Windows / Mac OS UI 컴포넌트 생성
클래스나 객체를 조합하여 더 큰 구조를 형성하는 패턴
✅ Adapter (어댑터 패턴)
설명: 호환되지 않는 인터페이스를 변환하여 서로 연결하는 패턴
사용 예시: USB → Type-C 변환기, 레거시 코드와 새 코드 연결
✅ Bridge (브릿지 패턴)
설명: 추상화(Abstraction)와 구현(Implementation)을 분리하여 독립적으로 확장할 수 있도록 하는 패턴
사용 예시: GUI에서 버튼과 테마(다크모드, 라이트모드) 분리
✅ Composite (컴포지트 패턴)
설명: 객체를 트리 구조로 구성하여 단일 객체와 복합 객체를 동일하게 다루는 패턴
사용 예시: 파일 시스템 (폴더 안에 폴더/파일 포함)
객체 간의 상호작용을 정의하는 패턴
✅ Iterator (반복자 패턴)
설명: 컬렉션 내부 구조를 노출하지 않고 순차적으로 요소를 접근할 수 있도록 하는 패턴
사용 예시: Java Iterator 인터페이스 (hasNext(), next())
✅ Visitor (방문자 패턴)
설명: 객체 구조를 변경하지 않고, 새로운 기능을 추가할 수 있도록 하는 패턴
사용 예시: 문서 구조에서 텍스트 찾기, 데이터 분석
✅ Observer (옵저버 패턴)
설명: 객체 상태 변화가 발생하면 관련된 객체들에게 자동으로 알림을 보내는 패턴
사용 예시: GUI 버튼 클릭 이벤트, 뉴스 구독 시스템


설명: 코드의 각 문장이 최소 한 번 실행되었는지 확인
설명: 모든 조건문(if, switch)이 true와 false를 최소 한 번씩 수행했는지 확인
설명: 개별적인 조건이 true와 false를 모두 수행했는지 확인
설명: if-else, switch 문에서 모든 분기를 테스트하는지 확인
설명: 프로그램에서 실행 가능한 모든 코드 경로를 테스트하는지 확인
설명: 모든 함수(메서드)가 최소 한 번 호출되었는지 확인
설명: 모든 루프(for, while, do-while)의 반복 실행을 확인