LINUX.ORG.RU

История изменений

Исправление pozitiffcat, (текущая версия) :

Как такой вариант:

class Book {
    private String content;
    private BookStorage storage;
    private BookPrinter printer;
    
    public void setContent(String content) {
        this.content = content;
        save();
    }
    
    public String getContetnt() {
        return this.content;
    }
    
    private void save() {
        storage.save(this);
    }
    
    public print() {
        printer.print(this);
    }
}

class BookStorage {
    private SqliteDatabase db;
    
    public void save(Book book) {
        // сложная логика по сохранению
    }
}

class BookPrinter {
    public void print(Book book) {
        // сложная логика
    }
}
Заморочка в том, что клиент класса book не хочет ничего знать о BookPrinter и BookStorage, для печати и сохранения при изменении.
Методы просто делегируют выполнение нужным классам.
Такой вариант нормальный? Или тут тоже нарушение SRP, кроме нарушения OCP?

Исходная версия pozitiffcat, :

Как такой вариант:

class Book {
    private String content;
    private BookStorage storage;
    private BookPrinter printer;
    
    public void setContent(String content) {
        this.content = content;
        save();
    }
    
    public String getContetnt() {
        return this.content;
    }
    
    private void save() {
        storage.save(this);
    }
    
    public print() {
        printer.print(this);
    }
}

class BookStorage {
    private SqliteDatabase db;
    
    public void save(Book book) {
        // сложная логика по сохранению
    }
}

class BookPrinter {
    public void print(Book book) {
        // сложная логика
    }
}
Заморочка в том, что клиент класса book не хочет ничего знать о BookPrinter и BookStorage, для печати и сохранения при изменении.
Методы просто делегируют выполнение нужным классам.
Такой вариант нормальный? Или тут тоже нарушение?