Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写单一责任原则_Java_Oop - Fatal编程技术网

Java 如何编写单一责任原则

Java 如何编写单一责任原则,java,oop,Java,Oop,我有菜单课。菜单类提供链接。每个链接都有图标和文本。 哪个类应该从IconId创建位图? 如果链接类将生成位图,则它违反SRP。 如果helper类将构建位图,则它是惰性类。 什么是对的 public abstract class Link { private int iconId; private String description; /* getters */ public abstract void action(); } 这取决于你的设计范围 如果

我有菜单课。菜单类提供链接。每个链接都有图标和文本。
哪个类应该从IconId创建位图?
如果链接类将生成位图,则它违反SRP。
如果helper类将构建位图,则它是惰性类。
什么是对的

public abstract class Link {
    private int iconId;
    private String description;

    /* getters */

    public abstract void action();
}

这取决于你的设计范围

如果所有链接类都具有相同的位图类型图像,那么将图像解析机制放在抽象类本身中可能是有意义的

另一方面,如果有不同的图像类型和格式,则必须将图像分辨率委托给扩展类。例如,您可以使用
公共类GifImageLink extends Link
,该类将负责解析Gif图像类型,而Gif图像类型又可以委托给其他一些单例类