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.