Search Blog

Search duranek.blogspot.com

Friday, February 3, 2012

State Pattern (Behavioral)

State Pattern ( Behavioral )

    Once State interface'i yaratilir.
    Burada her state icin yapilacak davranislari listeleriz
    mesela 
        interface LanguageState
            sayNo()
            sayYes()
    
        class GermanState implements LanguageState
            sayNo() //implementation
            sayYes() //implementation
            
        class EnglishState implements LanguageState
            sayNo() //implementation
            sayYes() //implementation
            
        Simdi state'e sahip olacak class
        
        class Person implements LanguageState // O da LanguageState'i implemente ediyor !
            LanguageState ls=null;
            setLanguageState(LanguageState s) //implementation
            sayNo(return ls.sayNo()) //implementation
            sayYes(return ls.sayYes()) //implementation
        
        class Demo
            main() {
                Person p = new Person()
                p.setLanguageState(new GermanState());
                p.sayNo();
                p.sayYes();
            }
            
    Burada state'e gore Person farkli davraniyor. Strategy pattern , online olarak algoritmayi set ediyor. 
    Yani strategy her zaman bir metod. State Pattern'de, state e gore birden fazla metod'a sahip oluyor.
    
    State pattern de, gercek obje de aslinda bir state oluyor, yukarida LanguageState'i implemente ettigi icin.
    
    Runtime de degisiklige ugradigi icin, buna behavioral pattern deniyor.

No comments: