TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #2442 1.33K
Java: используйте полиморфизм вместо цепочек instanceof.
Проверки типов часто приводят к разрастающимся if/else, нарушают принцип Open/Closed и заставляют изменять существующий код при добавлении новых сущностей.

❌ До:

public String describe(Animal animal) {
if (animal instanceof Dog) {
return "Woof";
} else if (animal instanceof Cat) {
return "Meow";
} else if (animal instanceof Cow) {
return "Moo";
}

throw new IllegalArgumentException("Unknown animal");
}


Каждый новый тип требует правки метода.

✅ После:

public interface Animal {
String sound();
}

public final class Dog implements Animal {
public String sound() {
return "Woof";
}
}

public final class Cat implements Animal {
public String sound() {
return "Meow";
}
}

public final class Cow implements Animal {
public String sound() {
return "Moo";
}
}

public String describe(Animal animal) {
return animal.sound();
}


Преимущества:
→ нет цепочек instanceof и приведения типов
→ меньше условной логики
→ проще расширять систему новыми типами
→ соблюдается принцип Open/Closed
→ поведение находится внутри самого объекта, а не размазано по коду

Добавить новое животное теперь можно без изменения существующей логики:
public final class Sheep implements Animal {
public String sound() {
return "Baa";
}
}


Клиентский код останется прежним:
describe(new Sheep());


Пусть объекты сами решают, как себя вести. Именно для этого и существует полиморфизм. #Java #OOP

👉 Java Portal
  • ❤ 4
More from @java_iibrary
  1. Sep 22, 2026Java-разработчики: Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканч…
  2. Sep 22, 2026Прогрев от Java-бабули 🙂 👉 Java Portal
  3. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
  4. Sep 21, 2026Псс, хочешь перестать мониторить Telegram в поисках работы? 👀 Ты листаешь каналы, видишь…
  5. Sep 21, 2026💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.…
  6. Sep 20, 2026Если бы пришлось заново начинать свой путь в Java в 2026 году, я бы придерживался такого r…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →