Собственно, возник такой вопрос. Этот принцип соблюдается при проектировании бизнес-сущностей (т.е моделей в MVC-паттерне), а вот при проектировании активностей принцип открытости/закрытости соблюсти не очень получается. Связано ли это с тем, что контроллер не является объектом, моделирующим некоторую сущность предметной области?
Пример кода, где этот принцип
нарушен:
class MainActivity extends Activity
{
private void someMethod()
{
SuperClassName objectName = new SubClassName(); // здесь нарушается принцип OCP
...
}
}
Конечно, чтобы решить эту проблему можно передать в качестве параметра ссылку на производный класс в метод "someMethod". Толко вот делать это должен клиентский код. Видимо, активность уже и является клиентским кодом. Так?
Пример кода, где этот принцип
соблюден:
class MainActivity extends Activity
{
private void someMethod(SuperClassName objectName)
{
objectName.methodName();
...
}
}