我想創建一個類,它將Activation Function
應用到一個值。類是如下下面所有SOLID Priciples的類的正確版本
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))));
}
}
凡Functions
是其中不同的功能所定義的enum
。現在只有sigmoid
功能,但會增加更多功能。
問題
我的東西它違反了Open-Closed Principle
,OOP的5個SOLID
原則之一(可能它違反以上)。那麼,編寫這個類以適應未來更多功能的正確方法是什麼?
任何幫助表示讚賞。
您不能在這裏應用任何SOLID原則。它甚至不是一個對象。它沒有國家。這只是一個靜態方法的集合。這是程序性的,而不是面向對象。一個贈品應該是班級被稱爲「......功能」 – Michael