Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 반복문
- 프로그래밍
- 오늘도 우라라 펫 공략
- ubuntu
- 오늘도 우라라
- topic
- 오늘도 우라라 공략
- C언어
- 기초
- Linux
- C++
- 등차수열
- LeetCode
- mysql
- 리눅스
- MSG
- mariaDB
- 토픽
- install opencv-4.4.0 on ubuntu 22.04
- 데이터 베이스
- ros
- Subscribe
- 마리아 DB
- JungOl
- while
- publish
- 환경설정
- 오늘도 우라라 펫
- 우분투
- 그랑사가
Archives
- Today
- Total
하루의 쉼터
[CreationalPatterns] Telescoping Constructor Pattern - 점층적 생성자 패턴 본문
프로그래밍/DesinPattern
[CreationalPatterns] Telescoping Constructor Pattern - 점층적 생성자 패턴
Changun An 2023. 4. 13. 23:38반응형
| OutLine. 점층적 생성자 패턴 (Telescoping Constructor Pattern)
│─ 특징
│─ 장점
│─ 단점
│─ 코드 With.C++
│─ Result(후기)
└─ Github
특징
- 매개변수를 가지는 생성자를 다양하게 미리 만들어 두는 것.
- 생성자를 특정하여 명백하게 배치 생성 가능.
- 구현해두는 것에 따라 필수 매개변수, 선택 매개변수 구분.
장점
- 구현이 간편함
- 가독성이 높음
- 각 생성자가 파라미터 종류와 개수를 명확하게 표현
단점
- 코드가 복잡해짐 (생성자가 많아짐)
- 유지보수성 저하
- 파라미터 순서 잘못 기입으로 인한 버그 발생
- 매개변수의 타입이 같은 경우 생성자 불가
코드 - With. C++
Robot.hpp
#pragma once
#include <iostream>
class Robot {
private:
std::string m_model_name; // Essential
float m_max_vel; //Essential
float m_max_angle; //Essential
float m_min_vel; // Select
float m_min_angle; // Select
public:
Robot(std::string model_name, float max_vel, float max_angle, float min_vel, float min_angle);
Robot(std::string model_name, float max_vel, float max_angle);
Robot(std::string model_name, float max_vel, float max_angle, float min_vel);
virtual ~Robot();
void fn_print_all();
};
Robot.cpp
#include "Robot.hpp"
Robot::Robot(std::string model_name, float max_vel, float max_angle, float min_vel, float min_angle) : m_model_name(model_name), m_max_vel(max_vel), m_max_angle(max_angle), m_min_vel(min_vel), m_min_angle(min_angle) {
}
Robot::Robot(std::string model_name, float max_vel, float max_angle) : Robot(model_name,max_vel,max_angle,(float)0.0,(float)0.0) {
}
Robot::Robot(std::string model_name, float max_vel, float max_angle, float min_vel ) : Robot(model_name, max_vel, max_angle,min_vel,(float)0.0) {
}
Robot::~Robot() {
}
void Robot::fn_print_all() {
std::cout << "model_name : " << m_model_name << " max_vel : " << m_max_vel << " max_angle : " << m_max_angle << " min_vel : "<<m_min_vel<< " min_angle : " << m_min_angle<<std::endl;
}
main.cpp
#include "Robot.hpp"
int main() {
Robot turtlebot("turtlebot", 30, 20, 10, 50);
turtlebot.fn_print_all();
Robot wavembot("wavembot", 80, 50, 10);
wavembot.fn_print_all();
Robot changunbot("changunbot", 50, 20);
changunbot.fn_print_all();
return 0;
}
Result
코드를 보면 생성자를 다양하게 미리 만들어두고 사용하는 방식이다보니 구현 자체는 간편하다는 장점이 있으나
코드가 길어지고 가독성이 떨어지며 생성 시 매개변수가 의미하는 바를 전부 외우고 있지 않으면 찾아봐야 한다.
GitHub
https://github.com/Anchangun/cpp_study/tree/main/DesinPattern/ConstructorPattern
반응형
'프로그래밍 > DesinPattern' 카테고리의 다른 글
[CreationalPatterns] Builder Pattern (2) | 2023.04.15 |
---|
Comments