'Java SOA patterns- Single service vs mulitple

I am trying to better understand patterns in SOA, and how it fares to OO design. I'll consider a taxi service. Basically, there are 3 patterns of application design I am considering:

  1. OO: Fields and business logic are encapsulated in class itself eg:
    Class     Car {
    // fields
    // methods including AddRider(), RemoveRider()
    }
  1. SOA with single service per object: There is a Car and a CarService
    car{}
    CarService{
     AddRider()
     RemoveRider()
    }
  1. SOA with single service per feature: This is rather new thing I am seeing which looks more extensible.
    Car{}
    AddRiderOperationService{}
    RemoveRiderOperationService{}

This approach looks more extensible since if I want to add a new operation, I need to just add another class. If these Service instances are exposed via factory, then only factory would need to be changed. However, this 3rd style is particularly confusing to me, especially in a OO language like java since I am essentially modelling an operation as a class. I am increasingly seeing this being used for interviews where input is a command/operation.

Can someone highlight the pros and cons of these? And is 3rd really a good way to design application? Looking for observations and recommendations from other devs.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source