Activation Function
를 적용하는 클래스를 만들고 싶습니다. Functions
다른 기능이 정의되는 enum
이다모든 솔리드 프라이스에 준하는 클래스의 올바른 버젼
public class ActivationFunction {
public static double function(double value, Functions functions) {
if(functions.equals(Functions.SIGMOID)) {
return sigmoid(value);
}
return 0f;
}
public static double derivativeOfFunction(double value, Functions functions) {
if(functions.equals(Functions.SIGMOID))
return sigmoidDerivative(value);
return 0f;
}
private static double sigmoid(double value) {
return 1/(1 + Math.exp(0 - value));
}
private static double sigmoidDerivative(double value) {
return (Math.exp(0 - value)/((1 + Math.exp(0 - value)) * (1 + Math.exp(0 - value))));
}
}
을 다음과 같이 클래스이다. 지금은 sigmoid
기능 만 있지만 더 추가됩니다.
질문
나는 것은 그것 (더를 위반 한 것 할 수 있음) Open-Closed Principle
, OOP의 5 개 SOLID
원칙 중 하나를 위반입니다. 앞으로 더 많은 함수를 추가 할 수 있도록이 클래스를 작성하는 올바른 방법은 무엇입니까?
도움을 주시면 감사하겠습니다.
여기에 솔리드 원칙을 적용 할 수 없습니다. 그것은 대상이 아닙니다. 그것은 국가가 없습니다. 그것은 정적 메서드의 모음입니다. 이것은 OOP가 아니라 절차 적입니다. 공짜로 클래스가 "... 기능"이라고해야합니다. – Michael