2016-03-22 17 views
1

Kullanıcıları diğer hizmetlerde yöneten bir hizmet üzerinde çalışıyorum (API çağrıları). Hizmetlerin eklenmesini kolaylaştırmak için, her hizmetin uygulamak zorunda olduğu bir arabirim (ServiceInterface) oluşturdum. Arayüz, newUser ($ input), removeUser ($ input), editUser ($ input) gibi bazı fonksiyonlara sahiptir ... Giriş, bir API (login, firstname, ..) çağırmak için gerekli olan tüm bilgilerden oluşur.). Temel olarak, arabirim kullanıcılar için bir CRUD, gruplar (kullanıcılar gruba aittir) ve izinler için (kullanıcıların bir grup için izinleri vardır).API mantığını tek bir yere sarma

Amaç, API çağrılarını hizmetimdeki işlemler ile eşleştirmektir. Örnek: Hizmetimde bir grup oluşturduğumda, onu arabirimi uygulayan tüm hizmetlerde oluşturmak istiyorum. Hizmetimde bir kullanıcı oluşturduğumda, aynı kullanıcıyı yalnızca ona erişim verdiğim hizmetlerde oluşturmak istiyorum. Hizmetimde bir kullanıcıya izin eklediğimde, hedeflenen hizmet için aynı kullanıcıya aynı izni eklemek istiyorum. Gördüğünüz gibi, eyleme bağlı olarak, "protokol" farklıdır.

Yapmak istediğim bu protokolü sarmak. Bu mantığı güncel kodumda görmek istemiyorum (kullanıcının erişime sahip olduğu hizmetleri aramak, hangi izin, hangi hizmete aittir ...).

Sahip olduğum tek fikir (ve gerçekten beğenmedim), tüm mantığı işlemek için bir "Yardımcı" sınıfı oluşturmaktır. Bir grup oluşturan kodumda şöyle bir şey yapardım: MyHelper :: newGroup ($ group, ..). Yeni bir kullanıcı oluşturduğumda, MyHelper :: newUser ($ login, $ firstname, ...), ...

Bu farklı mantığı daha fazla sarmak için daha iyi bir fikriniz var mı?

Teşekkürler.

cevap

0

Bu durumda gözlemci deseni en iyi seçenek. Gözlemci deseni takip hakkında ayrıntılı bilgi için:

http://www.tutorialspoint.com/design_pattern/observer_pattern.htm

+0

https://sourcemaking.com/design_patterns/observer

https://en.wikipedia.org/wiki/Observer_pattern Cevabınız için teşekkür ederiz. İyi anlarsam, benim arayüzüm, kullanıcı ve grupların oluşturulmasını/güncellenmesini sağlayan koda bir gözlemci olmak anlamına mı geliyor? Ancak şu anki uygulama oldukça eski ve OOP'ta yazılmadığı için bunu nasıl yapacağımı anlamıyorum. – Ryuu