본문 바로가기

CS37

[CS] 팩토리 패턴 팩토리 패턴? 팩토리 패턴이란 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 장점 상위 클래스에서는 객체 생성방식에 대해 알 필요가 없어져 유연성을 가짐 객체 생성 로직은 하위 클래스에서만 관리 되기 때문에 유지 보수성이 증가됨 상위 클래스와 하위 클래스가 분리되기 때문에 로직 관리하기가 편함 js // 상위 클래스 class CoffeeFactory { // static - 정적메서드 static createCoffee(type) { const factory = factoryList[type] return factory.createCoffee() } } class Latte { constructor() { this.. 2023. 9. 1.
[CS] 싱글톤 패턴을 구현하는 7가지 방법 싱글톤 패턴을 구현하는 7가지 방법 1. 단순한 메서드 호출 싱글톤 패턴 생성 여부를 확인하고 싱글톤이 없으면 새로 만들고 있다면 만들어진 인스턴스를 반환 public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { // 호출이 되었을 때 인스턴스 생성 if (instance == null) { instance = new Singleton(); } return instance; } } 그러나 이 코드는 메서드의 원자성이 결여되어 있음. 멀티스레드 환경에서는 싱글톤 인스턴스를 2개 이상 만들 수 있음 thread - Java public class .. 2023. 8. 31.
[CS] 싱글톤 패턴 싱글톤 패턴 싱글톤패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 장점 : 인스턴스 생성에 많은 코스트가 드는 데이터베이스 연결 모듈에 많이 쓰이며 인스턴스 생성을 효율적으로 함(인스턴스 생성할 때 드는 비용 줄어듬), I/O 바운드 작업에 많이 사용 단점 : 의존성이 높아지고 TDD를 할 때 불편함, 단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야함. 하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 '독립적인' 인스턴스를 만들기 어려움 ※ A가 B에 대한 의존성이 있다 → B가 변할 때 A도 변한다는 의미 싱글톤이 아닌 클래스 class Rectangle { constructor(height, width).. 2023. 8. 30.
[CS] 디자인 패턴, 라이브러리와 프레임워크 차이 디자인패턴이란? 디자인패턴 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것을 의미 디자인패턴은 라이브러리나 프레임워크를 만드는데 기초적인 원리가 되며 지금도 많은 라이브러리, 프레임워크가 어떠한 디자인패턴을 기반으로 만들어지고 있음 디자인패턴의 의의 여러 문제를 해결하는데 있어서 영감을 받을 수도 있고 팀원들과 협업할 때 어떤 문제가 나타났을 때 빠른 의사소통이 가능 디자인패턴의 종류 생성패턴, 구조패턴, 행동패턴 생성패턴 생성패턴은 객체 생성 방법이 들어간 디자인패턴 싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입패턴 구조패턴 구조패턴은 객체, 클래스 등으로 큰 구조를 만들 때 유연하고 효율적으로 만드.. 2023. 8. 29.
[CS] 추상화의 의미 추상화란 무엇인가? 추상화의 의미 프로그래밍에서의 추상화는 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것 또는 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것으로 복잡도를 낮추는 방법 추상화는 데이터, 프로세스 추상화 크게 2가지로 나눠짐 데이터 추상화 어떠한 데이터들의 공통점을 모으고 차이점은 버림. 예를 들어 고양이, 강아지, 원숭이 등의 객체들의 공통적인 특징을 묶어 동물이라는 카테고리로 카테고리화 시킴 프로세스 추상화 어떠한 내부 프로세스를 숨기는 것. 예를 들어 데이터베이스가 어떻게 데이터를 저장하는지는 모르지만 단순하게 insert, upsert 등의 쿼리로 데이터를 저장할 수 있음 ex1) abstract class Animal { public abs.. 2023. 8. 27.
[CS] 오버로딩과 오버라이딩 오버로딩과 오버라이딩 오버로딩(Overloading) 오버로딩은 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것. 이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스 내에서 사용 ex1) class Calculator { void multiply(int a, int b){ System.out.println("결과는 : "+(a * b) + "입니다."); } void multiply(int a, int b,int c) { System.out.println("결과는 : "+(a * b * c) + "입니다."); } void multiply(double a, double b){ System.out.prin.. 2023. 8. 26.