Hepimiz mutlaka durum odaklı problemler ile karşı karşıya kalmışızdır. Yani bir nesne belirli durumlarda belirli işlemleri gerçekleştirip yine belirli bir yeni duruma geçer ve bu döngü uygulamanın süreci boyunca devam eder. Aslında ilk akla gelen bu durumların if – else veya switch – case yapıları ile sağlanmasıdır; fakat bu kontroller ile karmaşıklık artar ve bakım zorlaşır. Bunun yerine her durumun bir nesne haline getirilmesi ve uygun işlemleri tetiklemesi daha esnek ve sağlam bir mimari sunacaktır. Örneğimize bakalım.
package anajavatica.pattern.behavioral.state;public interface IState {
public void updateState(Editor editor); public String stateInfo(); } |
package anajavatica.pattern.behavioral.state;public class InitialState implements IState {
public void updateState(Editor editor) { @Override } |
package anajavatica.pattern.behavioral.state;public class DebugState implements IState {
public void updateState(Editor editor) { @Override } |
package anajavatica.pattern.behavioral.state;public class RunState implements IState {
public void updateState(Editor editor) { @Override } |
package anajavatica.pattern.behavioral.state;public class Editor {
private IState state = null; public IState getState() { public void setState(IState state) { public void debug() { public void run() { } |
package anajavatica.pattern.behavioral.state;public class StateMain {
public static void main(String[] args) { Editor editor = new Editor(); initialState.updateState(editor); } } |
Görüldüğü gibi editör nesnesi belirli durumlara geçmektedir. IState arayüzünü uygulayan sınıflar editör nesnesini kullanarak yeni durumları belirliyor ve gerekli metotları tetikliyor. Böylece yeni eklenecek durumlar için daha esnek bir yapı sağlamış olduk. Bol Java’ lı günler dileğiyle… 😀
No responses yet