CS
-
전략패턴CS/전략패턴 2023. 7. 19. 20:33
전략패턴 : 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로 알고리즘을 캡슐화 하고 서로 교환 가능하도록 만드는 패턴이다. 문제를 해결하는 여러 알고리즘들이 있을 때 이들을 동일한 인터페이스를 사용하여 클라이언트에게 제공하고 실행 시점에 알고리즘을 변경 할 수 있게 한다. 즉 쉽게 말해 여러가지 전략 을 하나의 컨텍스트안에 넣어 사용자가 사용하기 쉽게 선택하거나 교환 해주는 것이다. //전략 인터페이스 class SoundStrategy { makeSound(); } // 강아지가 짖는 소리 전략 class DogSoundStrategy extends SoundStrategy { makeSound() { return "멍멍!"; } } // 고양이가 울렁거리는 소리 전략 class CatSoun..
-
DI와 DIP란CS/DI와DIP 2023. 7. 19. 20:06
의존성주입(DI, Dependency Injection) :객체들 간에 의존 관계가 있을 때 의존성을 느슨하게 만들어 유연하고 확장 가능한 코드를 작성하기 위해 사용 된다. 이를 위해 객체가 직접 의존하는 객체를 직접 생성하거나 검색하는 대신, 외부에서 의존 객체를 주입하는 방식으로 사용된다. 예를 들어 클래스 A가B에 의존한다. 의존성 주입을 사용하지 않는다면 A에서 클래스 B를 직접 생성해야한다. 하지만 의존성 주입(DI)을 적용하기 된다면 클래스 A는 B를 직접 생성하지 않고 외부에서 B의 인스턴스를 주입 받아 사용한다. 이를 통해 A와B 사이의 결합도를 낮추고 코드 재사용성과 테스트 용이성을 높일 수 있다. 직접 예를 한번 보자(의존성 주입 없는 경우) class Product { construc..
-
팩토리 패턴CS/팩토리 패턴 2023. 7. 18. 21:36
팩토리 패턴(Factory Pattern) :팩토리 패턴(Factory Pattern)은 상속 관계에 있는 두 클래스를 활용하여 객체 생성을 분리하는 패턴이다. 이 패턴에서 상위 클래스는 객체 생성의 뼈대를 결정하고, 하위 클래스는 객체 생성에 대한 구체적인 내용을 결정한다. 상위 클래스는 객체 생성을 위한 메서드를 정의하고, 이를 템플릿 메서드로 활용한다. 이 메서드는 객체를 생성하는 과정에서 변하지 않는 뼈대 로직을 가지고 있습니다. 하위 클래스들은 이 메서드를 상속받아 구현하면서 실제 객체를 생성하는 구체적인 내용을 결정한다. 이로써 상위 클래스는 객체의 생성 방식에 대해 알 필요가 없어지므로 유연성이 증가하고 클라이언트 코드는 상위 클래스를 통해 객체를 생성하며, 실제로 생성되는 객체의 타입은 하..
-
싱글톤 패턴CS/싱글톤 패턴 2023. 7. 18. 20:59
싱글톤패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 싱글톤 패턴은 프로그램에서 데이터베이스 연결이 필요한 경우, 매번 새로운 연결을 생성하면 리소스 낭비가 발생할 수 있다 그래서 싱글톤 패턴을 사용하여 한 번 연결을 생성한 후에는 해당 연결을 여러 곳에서 공유하여 사용하게 된다. 이렇게 하면 리소스를 효율적으로 관리할 수 있다. 하지만, 싱글톤 패턴은 오용될 경우 부작용을 일으킬 수 있으므로 신중하게 사용해야 한다. 일반적으로 멀티스레드 환경에서 동시에 접근하는 경우에는 동기화 문제에 유의해야한다 또한 싱글톤은 전역 상태를 유지게 되면서 여러곳에서 해당 객체를 사용하고 변경 할 수 있게 때문에 상태 관리가 어려울 수 있다 예기치 않은 상태 변경으로 인해 예상치 못한 동작이 발생할 수 있..
-
디자인패턴CS/디자인패턴 2023. 7. 18. 19:17
디자인 패턴 : 디자인 패턴은 프로그램을 설계하거나 개발할 때 발생할 수 있는 일반적인 문제들을 해결하기 위해 만들어진 일종의 설계 원리나 가이드 이다 이러한 패턴들은 객체 간의 상호 작용이나 구조에 관련된 문제를 다루며, 개발자들이 이러한 문제를 해결하기 위해 반복적으로 사용되는 해결책을 제공한다. 디자인 패턴은 다양한 종류가 있으며, 각각의 패턴은 특정한 문제 상황에서 적합한 해결 방법을 제시합니다. 이러한 패턴들은 공통적인 구조와 규약을 가지고 있어 개발자들이 이를 활용하여 코드를 구성할 수 있다 디자인 패턴은 재사용성과 유지보수성을 향상시키는데 도움을 주며, 소프트웨어의 품질과 확장성을 높이는데 기여합니다. 디자인 패턴은 많은 소프트웨어 개발자들이 공유하고 있으며, 이러한 패턴들은 소프트웨어 개발..
-
추상화CS/추상화란? 2023. 7. 16. 20:17
추상화란? :추상화(Abstraction)는 프로그래밍에서 복잡한 코드나 데이터, 구조를 단순하고 이해하기 쉬운 개념으로 표현하는 과정을 말한다. 추상화는 프로그래밍에서 복잡성을 관리하고 핵심 개념에 집중하기 위해 코드나 데이터, 구조를 단순화하는 과정이다. 추상화를 통해 코드를 구조화하고 중요한 개념만 강조하여 코드의 가독성과 유지보수를 용이하게 만든다. 추상화는 필요한 정보만 남기고 불필요한 세부 사항을 숨기는 것을 포함합니다. 추상화를 사용하면 프로그래머는 핵심 개념에 집중하고 코드를 더 이해하기 쉽게 만들 수 있습니다. 또한 추상화를 통해 코드를 구조화하고 모듈화하여 유지보수성을 향상시킬 수 있습니다. 필요한 정보만을 간결하게 표현함으로써 코드의 가독성을 높이고, 복잡성을 낮추는 역할을 말한다. ..
-
오버로딩과 오버라이딩이란?CS/오버로딩 오버라이딩 2023. 7. 16. 19:46
오버로딩 : 오버로딩은 같은 이름의 메소드,함수를 다른 매개변수로 여러 번 정의 하는 것을 말한다. 오버 로딩을 사용하면서 프로그램의 유연성을 높일수 있고 코드가 깔끔해 지는 효과가 있으며 같은 클래스 내에서 사용 가능하다. class Calculator { add(a, b) { return a + b; } add(a, b, c) { return a + b + c; } } const calc = new Calculator(); console.log(calc.add(2, 3)); // 출력: 5 console.log(calc.add(2, 3, 4)); // 출력: 9 오버라이딩 : 오버라이딩(Overriding)은 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 이름으로 다시 재정의하는 것을 ..
-
클래스와 객체와 인스턴스의 차이?CS/클래스 객체 인스턴스의 차이? 2023. 7. 16. 19:01
클래스(Class) :클래스(class)란 객체(object)를 만들기 위한 틀이며 실제 데이터를 가지고 있지는 않고 만들어 낼 객체의 속성과 메서드의 집합을 담아 놓은 것이다. 객체(Object) : 객체는 속성과 메서드를 포함한 데이터 구조 이며 속성(attribute), 동작(method)을 가지고 있다 또한 객체는 개별적이며 독립적인 상태를 가질 수 있고 서로 다른 객체는 동일한 속성이나 동작을 가질 수 있지만 그값이나 동작 결과는 다를 수 있다. 속성은 객체의 특징이나 상태를 나타내는 변수 이고 예를 들면 자동차라는 객체의 속성으로 브랜드,색상 모델등을 의미한다. 동작(Method)는 객체의 기능이나 동작을 나타내는 함수이다 예를 들어 자동차 객체의 동작으로 주행,가속,정지등을 의미한다. 인스턴..