전체 글

CS,PS, Algorithm
Proxy Pattern (Structural Design Pattern) 프록시 패턴은 클라이언트가 서버에 접근할 때, 중간에 프록시를 두어 클라이언트가 서버에 직접 접근하는 것이 아닌 프록시를 통해 접근하도록 하는 패턴이다. why?? - 클라이언트가 서버에 직접 접근하는 것을 막고 싶을 때 - 클라이언트가 서버에 접근할 때, 중간에 뭔가를 처리하고 싶을 때 - 클라이언트가 서버에 접근할 때, 서버에 접근하기 전에 뭔가를 처리하고 싶을 때 Proxy Pattern 구성요소 Subject : 클라이언트가 접근할 수 있는 인터페이스 RealSubject : 실제 서버에 접근하는 클래스 Proxy : 클라이언트가 접근할 때, 중간에 두는 클래스 Subject 인터페이스를 구현하고, RealSubject를 ..
Adaptor Pattern (Structural Pattern) 아답터 패턴은 Wrapper 패턴이라고도 불린다. Wrapper 패턴은 감싸는 것이라는 의미인데 다른 인터페이스를 감싸서 사용하는 것이다. 어댑터 패턴은 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있게 해준다. 아댑터 패턴 2가지 종류 클래스에 의한 어댑터 상속을 통해 어댑터를 구현 객체에 의한 어댑터 위임을 통해 어댑터를 구현 Adaptor Pattern의 예시 (클래스에 의한 어댑터) class Animal: def walk(self): print("walk") class Cat(Animal): def Walk(self): print("cat walk") class Dog(Animal): def Walk..
Prototype Pattern (Creational Pattern) Prototype pattern 이란? 프로토타입 (시제품) 프로토타입 패턴은 어떤 객체 (인스턴스) 를 복제해서 (+수정) 다른 인스턴스를 만드는 방식이다 . 이때 복제 및 수정을 담당하는 메서드는 Clone() 메서드이다. 복제를 할 때는, 깊은 복사를 사용해야한다. 깊은 복사를 사용하지 않고 얕은 복사를 한다면 ? 레이블(네이밍) 만 변경되고 같은객체를 가리킬 뿐이다. 정석적인 인스턴스를 보유한 후 실제로 사용할 인스턴스는 복제를 통해 만들어내는것 이 프로토타입패턴의 의의 이다. 프로토타입 패턴의 구현 #deepcopy(clone) 지원 cat import copy class Cat: # prototype def __init__(..
Singleton Pattern (Creational Pattern) 싱글톤 패턴 (Singleton Pattern): 싱글톤 패턴은 어떤 클래스가 최대 하나의 인스턴스만을 생성하도록 보장하는 패턴이다. 싱글톤 패턴은 인스턴스가 하나만 생성되도록 보장하므로, 전역 객체를 사용할 떄 유용하당. 또한, 싱글톤 패턴을 사용하면, 인스턴스가 하나만 생성되므로, 메모리 낭비를 방지할 수 있다. 다시 말해, 공유된 리소스 에 대한 동시 접근을 제어할 수 있다. 싱글톤 패턴은 하나의 인스턴스만 사용하게 강제하는 패턴이다 . 만약 추가로 인스턴스를 만드려는 시도가 있다면 ? 이미 생성된 인스턴스를 재활용한다 . 싱글톤 패턴을 사용하기 위해서는 ? __new__ 에서 인스턴스를 생성하고, __init__ 에서 인스턴스를..
Builder Pattern (Creational Pattern) 생성할 프로덕트의 구성요소가 많을때, 생성하는 빌더 클래스를 분리하여, 생성자의 파라미터가 많아졌을때, 가독성을 높이기 위해 사용한다. Builder Pattern의 작동방식 우선 Builder Partten을 사용하기 위해서는 다음과 같은 요소들이 필요하다. Builder 인터페이스 Builder 구현 클래스 생성될 프로덕트 인터페이스 생성될 프로덕트 구현 클래스 Builder Pattern을 사용하기 위해서는 다음과 같은 과정을 거친다. 빌더 패턴은 생성될 프로덕트 객체를 생성하는 과정이 너무 복잡할때 사용하는 패턴이다. 생성하는 과정이 복잡하다 = 생성될 프로덕트의 구성요소가 많다. 라는 의미인데 빌더패턴을 통해서, 생성될 프로덕트 ..
Abstract Factory Pattern(Creational Pattern) 추상 팩토리 패턴(Abstract Factory Pattern): 추상 팩토리 패턴은 행렬관계를 가진 클래스의 객체를 생성할때 유용하다. | | 테마 1 | 테마 2 | |--------|--------|---------| | 프로덕1 | | | | 프로덕2 | | | | 프로덕3 | | | 예시 ) 다크모드 라이트모드 버튼 선택! 체크박스 선택! 스크롤바 선택! 위와 같은 행렬관계를 가진 클래스의 객체를 생성할때, 팩토리 자체를 추상화하여, 테마별로 팩토리를 생성하고, 프로덕트를 생성할때, 테마별로 프로덕트를 생성하도록 한다. 이런 디자인 패턴을 추상 팩토리 패턴이라고 한다. 구현 방법 추상 팩토리 패턴을 구현하기 위해서는..
Factory Method Pattern (Creational Pattern) 팩토리 메서드 패턴 (Factory Method Pattern): 팩토리 패턴의 확장판이다. 팩토리 패턴에서는 팩토리 클래스가 객체를 생성하는 역할을 담당했다면, 팩토리 메서드 패턴에서는 팩토리 클래스가 객체를 생성하는 역할을 서브 클래스에게 위임한다. 또한 서브 클래스(컨크리트 팩토리) 클래스에서 추가적인 기능을 제공할 수 있음 Factory Method Pattern의 작동방식 팩토리 메서드 패턴은 객체 생성을 위한 인터페이스를 정의하고, 서브 클래스에서 각각의 다른방식으로 객체를 생성하도록 한다. 예시) 팩토리 메서드 패턴을 사용하여, 강아지와 고양이를 생성하는 것을 생각해봦, 우선, 팩토리 인터페이스를 정의한다. 해당 ..
Factory Pattern (Creational Pattern) Factory Pattern 이란? 팩토리 패턴은 객체를 생성에대한 인터페이스를 정의하는 패턴이다 복잡한 객체 생성에 대해서 클라이언트가 관여하지 않도록 한다. 팩토리 패턴은 객체를 생성하는 방법을 캡슐화하여, 객체 생성의 변화에 대응하기 쉽도록 한다. Factory Pattern의 작동방식 클라이언트가 팩토리에게 A라는 객체 생성을 요청 -> 팩토리는 A라는 객체를 생성하여 클라이언트에게 반환 클라이언트가 팩토리에게 B라는 객체 생성을 요청 -> 팩토리는 B라는 객체를 생성하여 클라이언트에게 반환 Factory Pattern의 구성요소 Creator: 객체를 생성하는 인터페이스나 추상 클래스를 정의합니다. 이 클래스는 객체 생성에 필요한..
Design Pattern 의 SOLID 원칙 Single Responsibility Principle about Single Responsibility Principle (단일 책임 원칙) : 모든 클래스는 하나의 책임만을 가져야한다. 클래스를 구현 할 때, 한 가지 기능에만 중점을 두고 구현해야한다. Why? : 만약 어떤 클래스가 다중 기능을 소유한다면, 수정하는데 어려움이 있을 수있다. 따라서, 특정 기능을 수정할 때 , 관련 클래스외에 건들필요강 없도록 설계해야함 단일 책임 원칙을 따르지 않았을 때, 수정이 어려워지고, 코드의 재사용성이 떨어진다. 코드의 재사용성을 높이기 위해서는, 단일 책임 원칙을 따르며, 다형성 을 이용해야한다. 다형성 : 하나의 인터페이스를 구현하는 여러 클래스들이 있을 ..
2차원 그래프 관련 https://www.geogebra.org/classic 지오지브라 클래식 - GeoGebra www.geogebra.org 행렬 계산기 https://matrixcalc.org/ko/ 행렬 계산기 이 계산기의 도움으로 행렬 행렬식, 계수, 행렬의 거듭 제곱, 행렬의 합과 곱셈을 구하고 역행렬을 계산할 수 있습니다. 행렬 요소를 입력하고 버튼을 클릭하십시오. matrixcalc.org 공학용 계산기 https://www.desmos.com/scientific?lang=ko Desmos | 공학용 계산기 www.desmos.com 코드 분석,해석 관련(디버깅 GUI) https://pythontutor.com/ Python Tutor: Learn Python, JavaScript, C..
문제 설명알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.길이가 짧은 것부터길이가 같으면 사전 순으로입력첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.출력조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.문제분석과정제일 처음으로 정수 n을 입력받는다. arr 는 n개의 문자열을 저장할 수 있는 리스트이다.arr = [None]*n for i in range(n): arr[i] = input() # ↓ arr = [input() for _ in..
황빵
황빵's World