클래스는 프로그램에서 핵심 역할 또는 기능을 수행하는 객체 또는 모듈로 간주되어야합니다. 다른 클래스 나 모듈이 수행하지 않는 역할. 예를 들어, sleep()
, run()
기능을 제공하는 클래스 Animal
을 가질 수 있습니다. 하지만 kill()
, hunt()
등 육식 동물 수업을 원할 수도 있습니다. 따라서 Animal
의 모든 변수가하는 일을 수행하는 Animal
에서 연장하여 Carnivores
클래스를 구현할뿐 아니라 추가로 사냥 및 사냥을 수행 할 수 있습니다.
클래스에 공용 메서드가 하나만있는 경우 디자인에 별도의 모듈로 포함하는 것이 중요한 경우 해당 클래스를 사용하는 것이 좋습니다. 필요한 경우 나중에 확장 할 수 있습니다.
은 또한 당신은, 정적 및 공공의가 그렇게 모든
Animal
'을
sleep()
및
run()
기능을 유지할 수 있습니다, 그래서 당신은 별도의 인스턴스를 생성하지 않고,
Animal.sleep()
등을 바로 할 수 있습니다. 그러나
roar()
과 같은 기능을해서는 안됩니다.
업데이트 : 내가 말한 이유, sleep()
및 run()
정적이 될 수있다, 또한 자고 실행 클래스 Man
있을 수 있습니다.
질문
물어 :
는 의미는 sleep()
및 run()
또는 그 클래스의 객체를 초기화하지 않고 클래스의 함수를 호출 할 수 있도록 하는가? 그렇다면 정적으로 만드는 것이 좋습니다.
:
더욱 두드러 그 분리가,가 아닌 instantiatable 유틸리티 클래스 인TemplateProcessorFacade
처럼, 형제 클래스에 정적 메서드를 추가 할 수 있도록하려면 클래스는가는 길인 것처럼 보인다. 유틸리티 정적 메서드는 상태가 옮겨지지 않을 때만 좋은 방법으로 보입니다. – skiwi미래 증명 코드가 좋은 코드입니다 – Bathsheba
@skiwi DI/IoC를 사용하기 시작한 이래로 정적 메소드가 좋지 않은 것처럼 보입니다.:> – user2864740