假设我有一个Path对象的包装器类,我将要存储一些其他有关的信息:例如hashCode和fileType。
public class FileWrapperClass {
private Path thePath;
private String hashCode;
private String fileType;
...
public void setPathFromUserInput(JFrame whatever) { ... }
public void generateHashCode() { ... }
public boolean testHashCodeAgainst(Path testAgainstMe) { ... }
public void determineFileType() { ... }
...
public Path getPath() { return thePath; }
public void setPath(Path thePath) { this.thePath = thePath; }
public String getHashCode() { return hashCode; }
public String getFileType() { return fileType; }
}
这个FileWrapperClass中不必包含generateHashCode(),testHashCodeAgainst(Path)和defineFileType()的逻辑,如果可能会有数百万个此类FileWrapperClass对象,则可能不需要。
因此,我想到我可能会将其拉到另一个类,并使它们成为可在FileWrapperClass实例上运行的静态方法。这使我可以抽出除最基本的吸气剂和吸气剂以外的所有产品,例如:
public class FileWrapperClass {
private Path thePath;
private String hashCode;
private String fileType;
...
public Path getPath() { return thePath; }
public void setPath(Path thePath) { this.thePath = thePath; }
public String getHashCode() { return hashCode; }
public void setHashCode(String hashCode) { this.hashCode = hashCode; }
public String getFileType() { return fileType; }
public String setFileType(String fileType) { this.fileType = fileType; }
}
public class FileWrapperClassOperator {
public static void setPathFromUserInput(JFrame whatever) { ... }
public static void generateHashCode() { ... }
public static boolean testHashCodeAgainst(Path testAgainstMe) { ... }
public static void determineFileType() { ... }
}
实际上,通过直接访问受保护的变量(尽管违反了OO原则。为获得性能提升值得吗?),从而使整个getter / setter动态无法实现会产生更好的性能吗?
public class FileWrapperClass {
public Path thePath;
public String hashCode;
public String fileType;
...
}
public class FileWrapperClassOperator {
public static void setPathFromUserInput(JFrame whatever) { ... }
public static void generateHashCode() { ... }
public static boolean testHashCodeAgainst(Path testAgainstMe) { ... }
public static void determineFileType() { ... }
}
我觉得我在这里做某事。如果它是现有的设计模式,那么我想知道它是什么,以便我可以学习它并对其进行编码。如果没有,那么任务就是优化这个概念。
需要明确的是,hashCode和fileType是任意数据。我试图从被实例化数百万次的类中删除尽可能多的代码,并将其放入具有多个静态方法的另一个单例类中,这些静态方法对被实例化数百万次的类的实例进行操作。
该设计模式有名称吗?
谢谢
最佳答案
我认为您是基于一些误解而建立了“模式”。
generateHashCode(),testHashCodeAgainst(Path)和
确定文件类型()不必包含在此文件中
FileWrapperClass,如果有的话可能不应该这样
可能有数百万个此类FileWrapperClass对象。
您是否认为该代码包含在数百万个实例中的每个实例中?如果是,则您错了,代码是共享的,创建单独的静态方法来处理它们没有好处。
实际上,它不会产生更好的性能来替代整体
getter / setter动态,支持直接访问受保护的变量
(尽管违反了OO原则。值得为一个表演
获得?),例如:
不,这里没有性能提升。这是微优化,无论如何JIT都将使它不必要。
总结一下,对不起,但是您在这里不是“忙于某事”,但是我希望您现在在“正确的道路上”。