2015-08-25 2 views
-2

У меня есть класс меню. Класс меню предоставляет ссылки. Каждая ссылка имеет IconId и текст.
Какой класс должен создавать растровые изображения из IconId?
Если класс Link будет строить битмап, то он нарушает SRP.
Если хелпер-класс будет строить растровые изображения, то это класс Lazy.
Правильно?Как написать принцип единой ответственности

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

    /* getters */ 

    public abstract void action(); 
} 
+0

Сообщение было отредактировано. –

ответ

1

Это действительно зависит от объема вашего дизайна.

Если все классы ссылок будут иметь одно и то же изображение растрового изображения, тогда может иметь смысл разместить механизм разрешения изображения в самом абстрактном классе.

Если, с другой стороны, у вас будут разные типы и форматы изображений, вам придется делегировать разрешение изображения расширяющимся классам. Например, у вас может быть public class GifImageLink extends Link, и этот класс позаботится о разрешении типа изображения Gif, который, в свою очередь, может быть делегирован другому классу singleton.