Home > Design Pattern > Contoh Fluent Interface

Contoh Fluent Interface

Fluent interface merupakan pemirikiran dari eric evans dan martin fowler. Merupakan cara untuk mengimplementasikan OO API yang tujuannya membuat code menjadi mudah dibaca. Biasanya diimplementasikan dengan method chaining. Tapi Fluent Interface lebih dari itu.

Ini adalah contoh code yg fluent dan tidak

namespace Example.FluentInterfaces
 {
    using System;
    public interface IConfiguration
    {
        void SetColor(string color);
        void SetHeight(int height);
        void SetLength(int length);
        void SetDepth(int depth);
    }
 
    public interface IConfigurationFluent
    {
        IConfigurationFluent SetColor(string color);
        IConfigurationFluent SetHeight(int height);
        IConfigurationFluent SetLength(int length);
        IConfigurationFluent SetDepth(int depth);
    }
 
    public class Configuration : IConfiguration
    {
        string color;
        int height;
        int length;
        int depth;
        void SetColor(string color)
        {
           this.color = color;
        }
        void SetHeight(int height)
        {
           this.height = height;
        }
        void SetLength(int length)
        {
           this.length = length;
        }
        void SetDepth(int depth)
        {
           this.depth = depth;
        }
    }
 
    public class ConfigurationFluent : IConfigurationFluent
    {
        string color;
        int height;
        int length;
        int depth;
        IConfigurationFluent SetColor(string color)
        {
           this.color = color;
           return this;
        }
        IConfigurationFluent SetHeight(int height)
        {
           this.height = height;
           return this;
        }
        IConfigurationFluent SetLength(int length)
        {
           this.length = length;
           return this;
        }
        IConfigurationFluent SetDepth(int depth)
        {
           this.depth = depth;
           return this;
        }
    }
 
    public class ExampleProgram
    {
        [STAThread]
        public static void Main(string[] args)
        {
            //Standard Example
            IConfiguration config = new Configuration();
            config.SetColor("blue");
            config.SetHeight(1);
            config.SetLength(2);
            config.SetDepth(3);
            //FluentExample
            IConfigurationFluent config = 
                  new ConfigurationFluent().SetColor("blue")
                                           .SetHeight(1)
                                           .SetLength(2)
                                           .SetDepth(3);
        }
    }
 }
Advertisement
Categories: Design Pattern Tags: ,
  1. thegands
    February 4, 2009 at 3:45 am

    loh… koq gak kau approve comment ku wel?

  2. weltam
    February 4, 2009 at 3:46 am

    udh kok

  3. thegands
    February 4, 2009 at 5:39 am

    yang kemaren? gak ada ya?

  4. weltam
    February 4, 2009 at 5:41 am

    ga ada bro ..
    ga kesubmit mungkin

  5. thegands
    February 4, 2009 at 6:04 am

    hm.. okelah kuketikkan lagi lah.
    dulu pun kupikir seperti itu bro. soalnya pernah ada kuliat sebuah java library(lupa dapat dari mana, tapi seingatku dari si joshua marpaung hehehe), dan cara implementasinya mirip dengan yang kau jelaskan diatas cess. kupikirpun dengan membuat sebuah API yang user friendly, akan membuat koding terasa aman dan nyaman. wakaka… pernah terpikir ku membuat API2 kayak gitu, tapi berat lah. klo gak ada donasi, atau gak ada yang bayar, sama aja nyapek2in ngetik koding ribet aku. cemana klo kita cari donasi wel? wakakakaka…. biar kita gantengkan dunia per-Java an ini? wakakaka… tapi klo kau gak mau, buatkan lah samaku dulu API2 yang udah kau tulis ya? hahahahah… sesama teman kan mesti gratis.. wakakaka

  6. weltam
    February 4, 2009 at 6:14 am

    ini ada api yg keren dan bersahabat. yg bikin si eric evans. yg cetuskan Fluent Interface itu.

    Dulu aku juga make kelas Calendar dari java itu ngeh kali rasanya. Karena banyak kali yg perlu disetting2.

    Mungkin mereka mikirnya supaya flexible kali ya.. Jadi dibikin sekompleks itu. Jadi sulit baca codingnya. Ga human readable. ini ada library time dan money yg cool.

    keren lah pokoknya. kw cari aja di sni gand. tingal dot dot dot. dan mudah baca codingnya. malah macam baca novel aja. seperti cerita…

    http://timeandmoney.sourceforge.net/

    aku kemaren malam udh coba itu. enak kali makenya

  7. thegands
    February 4, 2009 at 6:44 am

    oke segera ke TKP. tapi cemana rencana kita itu? wakakaka

  1. No trackbacks yet.

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 )

Connecting to %s

%d bloggers like this: