Searching pattern for user interface


Mengimplementasikan searching method untuk melakukan pencarian data bukanlah hal yang mudah. Bayangkan kita di assign task untuk mengimplementasikan searching departement dengan screen seperti dibawah ini:

Search Department
Name: [_______]
Age: from [__] to [__] year old
Budget: [ ]
{Search}

Data akses yang spesifik berhubungan dengan domain model di implementasikan dengan Repository pattern.  Cara umum yang biasa dilakukan orang adalah:

Lambda-Expression Repository

var result = departmentRepository.FindAll<Department>(
		x => x.Name.Contains(emailAddress) && x.StartDate > ageFrom
		&& x.StartDate > ageFrom && x.StartDate < ageTo || x.Budget < budget
	);

Aku suka dengan fitur Fluent diatas. Client API bisa dengan leluasa meng passing searching criteria ke parameter method tersebut. Tapi aku kurang nyaman dengan cara diatas, aku ga suka membiarkan searching criteria telanjang. Ketika aku hendak me-reuse criteria tersebut di screen lain tidak akan bisa. karena criteria di specify oleh client saat invoke method FindAll.

Continue reading

Advertisements