Принцип Tell Don't Ask

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Tell Don't Ask (англ. Tell Don't Ask — «наказуй, не запитуй») — принцип проєктування, згідно з якими замість того щоб просити в об'єкта дані, та їх змінювати, варто наказувати об'єкту, що зробити.

Приклад[ред. | ред. код]

Нехай, необхідно змоделювати об'єкт користувача, для якого можлива зміна імені. Наївна реалізація виглядатиме наступним чином:

// об'єкт містить лише дані, поведінка назовні
public class User
{
  public string Name { get; set }
}

// використання
var user = new User();
user.Name = "New user name";
RaiseEvent(new UserNameChanged(user.Name));

Змінимо код згідно з цим принципом.

// об'єкт містить як дані, так і поведінку
public class User
{
  private string _name;

  public void ChangeName(string name)
  {
    _name = name;
   
    RaiseEvent(new UserNameChanged(name));
  }
}

// використання
var user = new User();
user.ChangeName("New user name");

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]