Fluent interface

V đnh nghĩa fluent interface, mi các bn xem ti đây

Gi s bn mun đi t Hà Ni ti Sài Gòn qua các thành ph khác nhau và bng các phương tin khác nhau theo th t sau:

  • Đi taxi ti ga.
  • Đi tàu ha ti Huế.
  • Ngh ti Huế 1 tun.
  • Đi xe khách ti Đà Nng.
  • Ngh ti Đà Nng 3 ngày.
  • Đi máy bay ti Sài Gòn.

    Nếu theo cách lp trình thông thường, bn s có 1 class HanhTrinh, trong class đó s có 5 phương thc DiBangTaxi(Đa đim), DiBangTauHoa(Đa đim), DiBangXeKhach(Đa đim), NghiTai(Đa Đim), DiBangMayBay(Đa đim) như sau:

    public class HanhTrinh

    {

    public void DiBangTaxi(string diaDiem)

    {

    Console.WriteLine(“Di bang taxi toi {0}”, diaDiem);

    }

    public void DiBangTauHoa(string diaDiem)

    {

    Console.WriteLine(“Di bang tau hoa toi {0}”, diaDiem);

    }

    public void DiBangXeKhach(string diaDiem)

    {

    Console.WriteLine(“Di bang xe khach toi {0}”, diaDiem);

    }

    public void DiBangMayBay(string diaDiem)

    {

    Console.WriteLine(“Di bang may bay toi {0}”, diaDiem);

    }

    public void NghiTai(string diaDiem,int ngay)

    {

    Console.WriteLine(“Nghi tai {0} {1} ngay”, diaDiem, ngay);

    }

    }

    Khi đi từ Hà Nội tới Sài Gòn, ta gọi class HanhTrinh như sau:

    static void Main(string[] args)

    {

    var hanhtrinh = new
    HanhTrinh();

    hanhtrinh.DiBangTaxi(“Ga Ha Noi”);

    hanhtrinh.DiBangTauHoa(“Hue”);

    hanhtrinh.NghiTai(“Hue”, 7);

    hanhtrinh.DiBangXeKhach(“Da Nang”);

    hanhtrinh.NghiTai(“Da Nang”, 3);

    hanhtrinh.DiBangMayBay(“Sai Gon”);

    }

    Nếu ta viết lại class HanhTrinh theo cách thức “fluent” thì nó có dạng như sau:

    public class FluentHanhTrinh

    {

    public FluentHanhTrinh DiBangTaxi(string diaDiem)

    {

    Console.WriteLine(“Di bang taxi toi {0}”, diaDiem);

    return this;

    }

    public FluentHanhTrinh DiBangTauHoa(string diaDiem)

    {

    Console.WriteLine(“Di bang tau hoa toi {0}”, diaDiem);

    return this;

    }

    public FluentHanhTrinh DiBangXeKhach(string diaDiem)

    {

    Console.WriteLine(“Di bang xe khach toi {0}”, diaDiem);

    return this;

    }

    public FluentHanhTrinh DiBangMayBay(string diaDiem)

    {

    Console.WriteLine(“Di bang may bay toi {0}”, diaDiem);

    return this;

    }

    public FluentHanhTrinh NghiTai(string diaDiem, int ngay)

    {

    Console.WriteLine(“Nghi tai {0} {1} ngay”, diaDiem, ngay);

    return this;

    }

    }

    Vi cách viết này, ta gi class FluentHanhTrinh như sau:

    static void Main(string[] args)

    {

    new FluentHanhTrinh()

    .DiBangTaxi(“Ga Ha Noi”)

    .DiBangTauHoa(“Hue”)

    .NghiTai(“Hue”, 7)

    .DiBangXeKhach(“Da Nang”)

    .NghiTai(“Da Nang”, 3)

    .DiBangMayBay(“Sai Gon”);

    }

    Và đây là kết qu chương trình:

3 thoughts on “Fluent interface

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s