O в принципе SOLID означает: принцип открытия/закрытия. Из всего, что есть в SOLID, это было, вероятно, то, что мне было легче всего понять.

Это означает, что вещи должны быть открыты для расширения и закрыты для модификации. Хорошим примером является следующее из моего Java Server. Я создал класс IEndpoint, который представляет собой интерфейс:

public interface IEndpoint {
    byte[] route(HttpRequest request);
}

Если я хочу создать дополнительные конечные точки, я бы создал новый класс, реализующий интерфейс. Таким образом, я бы следовал принципу, когда IEndpoint открыт для расширения, но закрыт для модификации, где я не буду изменять интерфейс для новых конечных точек, которые его реализуют:

public class FormEndpoint implements IEndpoint {
...
}

Другими словами, если мой проект Java Server в целом сделан правильно, я смогу превратить его в файл Jar, поместить в репозиторий Mavne, а другие смогут создать свой собственный сервер, расширив то, что Я уже создал, но без изменения существующего кода.

Поэтому, если кто-то хочет быстро построить, скажем, сервер Tic Tac Toe, он должен иметь возможность быстро создать конечную точку, потому что я уже заложил основу для интерфейса IEndpoint вместе с другими классами, которые реализуют запросы и ответы Http.