
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
접근제어자 Access modifier
클래스와 클래스의 멤버(필드,메소드,생성자)를 사용할 때 접근할 수 있는 범위를 지정해 주는 것이다.
접근제어자 또는 접근 지정자 라고도 한다.
키워드는 클레스 멤버 앞에 붙어있다.
클래스를 정의할 때 사용할 수 있는 접근제어자
public 과 default (생략하면 default이다) 두 가지가 있다
public 클래스 : public을 사용하면 모든 클래스에서 이 클래스에 접근이 가능하다. (패키지를 넘나듦)
default 클래스 : 클래스 앞에 접근제어자가 없는 경우 default 클래스로 같은 패키지 안에서만 클래스 접근이 가능하다
클래스 멤버와 사용가능 한 접근제어자
public , private, protected , default 가 있다.
- public 멤버 : public 은 '공개'를 나타내며, 모든 클래스에서 접근이 가능합니다 (패키지와 상관없음)
- private 멤버 : private은 '비공개'를 나타내며, 같은 클래스 안에 있는 멤버들만 접근이 가능합니다.
- protected 멤버 : 같은 패키지안의 모든 클래스와, 다른 패키지의 자식 클래스에서 접근이 가능합니다.
- default(생략) 멤버 : 접근지정자가 없으면 default 멤버로, 같은 패키지안의 클래스에서만 접근이 가능합니다
- 공개범위는 public > protected > default(생략) > private 순으로 좁아집니다.
디자인 패턴 - 정의
객체지향 프로그래밍에서 디자인 패턴은 소프트웨어 디자인의 재사용 가능한 해결책을 설명하는 일종의 템플릿이다.
이러한 패턴은 특정한 문제나 상황에서 발생하는 공통된 설계 문제를 해결하기 위한 최적의 방법을 제시합니다.
디자인 패턴은 소프트웨어 개발에서 쌓인 경험과 최선의 실천 방법을 공유하기 위한 도구로 사용됩니다.
디자인 패턴은 주로 클래스와 객체 간의 관계, 책임 분배, 상속, 인터페이스, 컴포지션 등의 요소를 다룹니다.
몇 가지 유명한 디자인 패턴에는 싱글톤, 팩토리 메서드, 어댑터, 데코레이터, 옵서버, 전략 등이 있으며,
각 패턴은 특정한 상황에서 발생하는 문제를 해결하는 방법을 제시합니다.
디자인 패턴은 개발자들 사이에서 공통된 언어와 개념을 제공하므로 코드를 이해하고 협업하는 데 도움이 됩니다.
또한, 이러한 패턴은 소프트웨어의 유지보수성, 확장성, 재사용성을 향상하는 데 도움을 줄 수 있습니다.
싱글톤 패턴(Singleton Pattern)
싱글톤 패턴(Singleton Pattern)은 객체지향 디자인 패턴 중 하나로
특정 클래스의 인스턴스가 하나만 생성되도록 보장하며, 이 인스턴스에 대한 전역적인 접근 지점을 제공하는 패턴이다.
특징 1
유일한 인스턴스: 해당 클래스의 인스턴스는 오직 하나만 존재한다.
이는 다른 객체에서 이 인스턴스에 접근하려면 항상 동일한 인스턴스를 얻게 됨을 의미한다.
특징 2
전역적인 접근 지점: 이 싱글톤 인스턴스는 어디서나 접근 가능한 전역 변수 또는 메서드를 통해 접근할 수 있습니다.
이것은 특정 리소스 또는 설정과 같은 전역 데이터를 공유하기 위해 유용하다.
예제
public class Singleton {
private static Singleton instance;
private Singleton() {
// 생성자를 private로 선언하여 외부에서 인스턴스를 직접 생성하는 것을 방지
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
'getInstance'메서드를 통해 유일한 인스턴스를 얻게 된다
만약 인스턴스가 아직 생성되지 않았다면, 새로운 인스턴스를 생성하고 반환한다, 이미 생성된 경우 기존 인스턴스를 반환한다.
장점
싱글톤 패턴은 전역 상태를 관리하거나, 리소스를 공유를 하기 위해 사용되므로 인스턴스 생성 시 발생되는 비용을 감소하게 한다.
단점
지나치게 남발되면 코드를 복잡하게 만들 수 있고 의존성이 높아진다.
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/10/31 🤔 Collections Framework & ArrayList (1) | 2023.11.01 |
---|---|
2023/10/30 📝 Getter & Setter (0) | 2023.11.01 |
2023/10/25 😍 클래스 실습 과제2 (0) | 2023.10.31 |
2023/10/24 😍 클래스 실습 과제 (1) | 2023.10.31 |
2023/10/23✨ 클래스 (0) | 2023.10.31 |