Използване на аксесоари и мутатори в Java

click fraud protection

Един от начините, по които можем да се наложим капсулиране на данни става чрез използването на аксесоари и мутатори. Ролята на аксесоарите и мутаторите са да връщат и задават стойностите на състоянието на обекта. Нека научим как да програмираме аксесоари и мутатори в Ява. Като пример ще използваме a Часовник с вече дефинираното състояние и конструктор:

Методи за аксесоари

Една Accessor метод се използва за връщане на стойността на частно поле. Следва схема на именуване, префикс на думата "get" в началото на името на метода. Например да добавим методи за достъп за име, средно име и фамилия:

Тези методи винаги връщат същия тип данни като съответното им частно поле (например String) и след това просто връщат стойността на това частно поле.

Вече можем да получим достъп до техните стойности чрез методите на обект Person:

Мутаторни методи

Мутаторният метод се използва за задаване на стойност на частно поле. Следва схема за именуване, префиксираща думата "set" към началото на името на метода. Например, нека добавим мутаторни полета за адрес и потребителско име:

instagram viewer

Тези методи нямат тип връщане и приемат параметър, който е същия тип данни като съответното им частно поле. След това параметърът се използва за задаване на стойността на това частно поле.

Вече е възможно да промените стойностите за адреса и потребителското име вътре в обекта Person:

Защо да използвате аксесоари и мутатори?

Лесно е да стигнем до извода, че можем просто да променим частните полета от дефиницията на класа, за да бъдат публични и да постигнем същите резултати. Важно е да запомните, че искаме да скрием максимално данните на обекта. Допълнителното буфер предоставени от тези методи ни позволяват:

  • Променете как се обработват данните зад кулисите.
  • Наложете валидиране на стойностите, на които се задават полетата.

Да речем, че решаваме да променим начина, по който съхраняваме средни имена. Вместо само един String вече можем да използваме масив от Strings:

Изпълнението вътре в обекта се е променило, но външният свят не е засегнат. Начинът, по който се наричат ​​методите, остава абсолютно същият:

Или да кажем, че приложението, което използва обекта Person, може да приема само потребителски имена, които имат максимум десет знака. Можем да добавим валидиране в мутатора setUsername, за да се уверим, че потребителското име отговаря на това изискване:

Сега, ако потребителското име, предавано на мутатора setUsername, е по-дълго от десет знака, то автоматично се прерязва.

instagram story viewer