Software Engineer's Blog

Showing Posts From

Java

Applying OCP with the Strategy Pattern in Java

System Design

Applying OCP with the Strategy Pattern in Java

Jason Yang · 13 May, 2026

Apply the Open-Closed Principle in Java with the Strategy Pattern — add new behavior without editing core logic, shown with a payment-processing example.

DIP vs DI: Understanding the Difference in Java

System Design

DIP vs DI: Understanding the Difference in Java

Jason Yang · 13 May, 2026

DIP vs DI in Java: they work together but differ — DIP keeps logic depending on abstractions, DI supplies dependencies from outside. Explained with examples.

SOLID Principles in Java

System Design

SOLID Principles in Java

Jason Yang · 12 May, 2026

SOLID principles in Java explained with simple examples — SRP, OCP, LSP, ISP, and DIP, each with backend-focused code. The full series index starts here.

What Is MapStruct and Why Do We Need It?

Framework

What Is MapStruct and Why Do We Need It?

Jason Yang · 26 Jan, 2026

MapStruct is a compile-time mapping tool for Spring projects that reduces boilerplate, improves safety, and makes DTO mapping cleaner and more testable.

Designing Effective Custom Exceptions in Java

Programming Language

Designing Effective Custom Exceptions in Java

Jason Yang · 29 Nov, 2025

Design effective custom exceptions in Java: structure them well, separate business and system errors, and integrate cleanly with Spring Boot error handling.

Understanding Java Exception Hierarchy

Programming Language

Understanding Java Exception Hierarchy

Jason Yang · 27 Nov, 2025

Understand Java's Throwable hierarchy — Error vs Exception, checked vs unchecked, and RuntimeException — to write safer error handling in production apps.

Checked vs Unchecked Exceptions in Java

Programming Language

Checked vs Unchecked Exceptions in Java

Jason Yang · 14 Nov, 2025

Checked exceptions are enforced by the Java compiler; unchecked ones aren't — here's the difference, with the class hierarchy, code examples, and when each applies.