برای کد زنی قابل فهم تر و خواناتر کاربرد دارد. برای اولین بار سال ۲۰۰۵ توسط مارتین فاولر ارائه شد.
بصورت سلسله مراتبی و پشت سر هم دستورات مرتبط به هم زده میشود.
به عنوان مثال در روش سنتی برای اضافه کردن یکسری object به عنوان ورودی متد به یکسری object دیگر مانند زیر عمل میشد:
private void makeNormal(Customer customer) {
Order o1 = new Order();
customer.addOrder(o1);
OrderLine line1 = new OrderLine(6, Product.find("TAL"));
o1.addLine(line1);
OrderLine line2 = new OrderLine(5, Product.find("HPK"));
o1.addLine(line2);
OrderLine line3 = new OrderLine(3, Product.find("LGV"));
o1.addLine(line3);
line2.setSkippable(true);
o1.setRush(true);
}
ولی در روش اراپه شده به شکل زیر بصورت سر راست تر عمل میشود :
private void makeFluent(Customer customer) {
customer.newOrder()
.with(6, "TAL")
.with(5, "HPK").skippable()
.with(3, "LGV")
.priorityRush();
}
fluent interfaceها جز الگوهای طراحی استاندارد و شناخته شده نیستند و صرفا یک نوع پیاده سازی API های شی گرا می باشند.
http://martinfowler.com/bliki/FluentInterface.html