«design-patterns» 태그된 질문

디자인 패턴은 소프트웨어 디자인에서 일반적으로 발생하는 문제에 대한 일반적인 재사용 가능한 솔루션입니다.

6
전역 적으로 고유 한 메시지 ID를 사용하여 코드를 찾을 수 있도록 만들기
버그를 찾는 일반적인 패턴은 다음과 같습니다. 출력이 없거나 교수형 프로그램과 같은 이상한 점을 관찰하십시오. 로그 또는 프로그램 출력에서 ​​관련 메시지를 찾으십시오 (예 : "Foo를 찾을 수 없음"). (다음은 버그를 찾는 경로 인 경우에만 해당됩니다. 스택 추적 또는 기타 디버깅 정보를 쉽게 사용할 수있는 경우 이는 또 다른 이야기입니다.) 메시지가 인쇄되는 …

9
정적 멤버를 제외한 유틸리티 클래스는 C ++의 안티 패턴입니까?
클래스와 관련이없는 함수를 어디에 두어야하는지에 대한 질문 은 C ++에서 유틸리티 함수를 클래스에 결합하는 것이 합리적인지 또는 네임 스페이스에서 자유 함수로 존재하는지 여부에 대한 논쟁을 불러 일으켰습니다. 나는 후자의 옵션이 존재하지 않는 C # 배경에서 왔으므로 자연스럽게 내가 작성한 작은 C ++ 코드에서 정적 클래스를 사용하는 경향이 있습니다. 그러나 몇 …

10
관용구와 디자인 패턴의 차이점은 무엇입니까?
관용구와 디자인 패턴의 차이점은 무엇입니까? 이러한 용어는 어딘가에 겹치는 것 같습니다. 정확히, 나는 모른다. 그들은 상호 교환이 가능합니까? 언제 무엇을 사용해야합니까? 다음 은 C ++ 숙어 목록입니다. 디자인 패턴이라고 부를 수 있습니까? Wikipedia 는 다음을 정의합니다. 저수준 디자인 패턴으로 숙어 프로그래밍 무슨 뜻인가요? 여기서 "저수준" 은 무엇을 의미합니까? 이 질문은 …

6
컨트롤러 계층에 얼마나 많은 비즈니스 로직이 있어야합니까?
때로는 애플리케이션의 컨트롤러 코드에 일부 비즈니스 로직이 표시됩니다. 이것은 일반적으로 모델에서 호출 할 메소드 및 / 또는 전달할 인수를 구별하는 논리입니다. 이것의 또 다른 예는 일련의 비즈니스 규칙에 따라 모델에서 리턴 된 데이터를 형식화하거나 삭제하는 컨트롤러에 존재하는 유틸리티 기능 세트입니다. 이것은 효과가 있지만 재난으로 유혹되는지 궁금합니다. 컨트롤러와 모델간에 공유되는 비즈니스 …

4
도메인 모델에 대한 유효성 검사를 수행해야하는 위치
여전히 도메인 모델 유효성 검사에 대한 모범 사례를 찾고 있습니다. 도메인 모델의 생성자에 유효성 검사를 넣는 것이 좋습니까? 내 도메인 모델 유효성 검사 예제는 다음과 같습니다. public class Order { private readonly List<OrderLine> _lineItems; public virtual Customer Customer { get; private set; } public virtual DateTime OrderDate { get; private …

11
생성자 전용 서브 클래스 : 안티 패턴입니까?
나는 동료와 토론을하고 있었고, 결국 서브 클래 싱의 목적에 대해 직관이 상충되었습니다. 내 직감은 서브 클래스의 주요 기능이 부모의 가능한 범위의 값을 표현하는 것이라면 아마도 서브 클래스가 아니어야한다는 것입니다. 그는 반대 직관을 주장했다. 서브 클래 싱은 객체의 "특정"성을 나타내므로 서브 클래스 관계가 더 적절하다. 직관을보다 구체적으로 설명하기 위해 부모 클래스를 …

9
객체 지향 코드를 작성할 때 항상 디자인 패턴을 따라야합니까?
객체 지향 프로그램에 대해 생각할 수있는 디자인 패턴이 있습니까? 최근에으로 Door클래스 의 구현을 보았 기 때문에 이것을 묻습니다 Lock. 테스트의 일부였으며 코드가 Null Object 패턴을 따른다고 답했습니다. class Lock { public: virtual void close() = 0; virtual void open() = 0; virtual bool is_open() const = 0; virtual ~Lock() { …

11
각 반에 하나의 책임이 있는지 확인하십시오. 왜 그렇습니까?
Microsoft 문서, Wikipedia SOLID 프린시 페 기사 또는 대부분의 IT 설계자에 따르면 각 클래스마다 하나의 책임 만 갖도록해야합니다. 모든 사람이이 규칙에 동의하는 것 같으면이 규칙의 이유에 대해 아무도 동의하지 않는 것 같아 이유를 알고 싶습니다. 어떤 사람들은 더 나은 유지 보수를 인용하고, 어떤 사람들은 쉬운 테스트를 제공하거나 클래스를보다 강력하거나 안전하게 …


11
MVC의 'C'가 정말로 필요한가요?
Model-View-Controller 패턴에서 모델과 뷰의 역할을 이해하지만 컨트롤러가 왜 필요한지 이해하기가 어렵습니다. MVC 방식을 사용하여 체스 프로그램을 작성한다고 가정 해 봅시다. 게임 상태는 모델이어야하고 GUI는보기 여야합니다. 이 경우 컨트롤러는 정확히 무엇입니까? 타일을 클릭 할 때 호출되는 모든 기능을 가진 별도의 클래스입니까? 뷰 자체에서 모델의 모든 로직을 수행하는 것이 어떻습니까?

6
"매퍼"가 유효한 디자인 패턴입니까 아니면 "공장"패턴의 변형입니까?
내가 볼 수있는 일반적인 패턴은 일종의 "원시"데이터 소스 (예 : ADO.NET 또는 )를 인수로 사용 하여 필드를 매핑하는 Mapper패턴 ( DataMapper전적으로 다른 것과 혼동하지 말 것)으로 알려진 패턴 입니다. 비즈니스 / 도메인 개체의 속성 예:DataReaderDataSet class PersonMapper { public Person Map(DataSet ds) { Person p = new Person(); p.FirstName = …

9
코딩시 분석을 통해 마비를 어떻게 극복합니까?
새 프로젝트를 시작할 때 종종 구현 세부 사항에 대해 즉시 생각하기 시작합니다. "DataBaseHandler를 어디에 두어야합니까? 어떻게 사용해야합니까? 이것을 사용하려는 클래스가 일부 Abstract 슈퍼 클래스에서 확장되어야합니까? 인터페이스를 사용해야합니까? 클래스가 포함 된 추상화 수준은 무엇입니까? 요청을 보내고 데이터를 파싱하는 방법? " 확장 성과 재사용 성을 위해 코딩하기를 원하기 때문에 오랫동안 실속합니다. 그러나 …

6
iOS에서 크고 서투른 UITableViewController를 피하는 방법은 무엇입니까?
iOS에서 MVC 패턴을 구현할 때 문제가 있습니다. 인터넷을 검색했지만이 문제에 대한 좋은 해결책을 찾지 못하는 것 같습니다. 많은 UITableViewController구현이 다소 큰 것 같습니다. 내가 본 대부분의 예제는 UITableViewController구현 <UITableViewDelegate>하고 <UITableViewDataSource>. 이러한 구현은 왜 커지는 큰 이유 UITableViewController입니다. 한 가지 해결책은 <UITableViewDelegate>및 을 구현하는 별도의 클래스를 만드는 것 <UITableViewDataSource>입니다. 물론 이러한 …

8
OOP가 쉬워 지거나 어려워지고 있습니까? [닫은]
프로그래머에게 Object Oriented Programming의 개념이 소개되었을 때 흥미로워 보였고 프로그래밍이 더 깨끗했습니다. 이런 식으로 Stock stock = new Stock(); stock.addItem(item); stock.removeItem(item); 그것은 자기 묘사 적 이름으로 이해하기가 더 쉬웠습니다. 그러나 이제는 데이터 전송 개체, 값 개체, 리포지토리, 종속성 주입 등과 같은 패턴을 가진 OOP가 더욱 복잡해졌습니다. 위의 내용을 달성하기 위해 …

4
Javascript를 이용한 디자인 패턴의 중요성, NodeJs et al
향후 몇 년 동안 Javascript가 웹의 유비쿼터스 프로그래밍 언어 인 것처럼 보이면 5 분마다 새로운 프레임 워크가 나타나고 서버와 클라이언트 측 모두를 주도하는 이벤트 중심 프로그래밍이 이루어집니다. Javascript 개발자로서 기존 디자인 패턴을 다른 언어 / 환경에서보다 중요하거나 덜 중요하게 생각하십니까?. Javascript 개발자가 정기적으로 사용하는 상위 3 가지 디자인 패턴의 이름을 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.