Diyagramlar ve Ödeme Sistemi Diyagramı
Diyagramlar, kavraması bazen zor olan yapıların veya bilgilerin daha rahat ve açık bir şekilde anlaşılmasını sağlayan şekiller bütünüdür. Diyagramları üç ana başlık altında toplayabiliriz. Bunlar; Grafik benzeri diyagramlar, Graph tabanlı diyagramlar, Şematik diyagramlar. Bunları kısaca örnekleyecek olursak;
Grafik Tabanlı Diyagramlar
Graph Tabanlı Diyagramlar
Şematik Tabanlı Diyagramlar
Bu yazının amacı diyagramların ne olduğunu yazmak veya onlardan bahsetmek değil (yukarıdaki resimlere ve yazıya erişmek için buradan devam edebilirsiniz) asıl amaç kendi tasarladığım yazılım diyagramlarını paylaşmak ve paylaştığım bu diyagramların ne olduğunu ve nasıl kullanılması gerektiği ile ilgili bilgiler paylaşmak.
Ödeme Sistemi Diyagramı
Ödemeler çoğu zaman büyük bir baş belası olabilir ve sürekli değişkenlik göstermesi yazılımcıları oldukça zahmetli bir sürece sokabiliyor. Bu yüzden yazılımcılar tasarladıkları yapıların esnek bir şekilde genişleyebilmesini isterler, tabi herşeyi esnke yapamazsınız örneğin bir balonu ele alalım, şişirdiğiniz kadar şişer ancak bir noktadan sonra şişirmeyi bırakmazsanız patlar 🙂 doğal olarak bir yazılımı evet esnek yapmalısınız ancak esneme noktasında bir sınır koymanız gerekiyor eğer sınır koymazsanız yaptığınız yazılım patlamayla sonuçlanır.
Konumuza geri dönelim, şimdi hemen altta bir ödeme diyagramı paylaşacağım, ancak bu diyagramı incelmeden önce tavsiye olarak Strategy tasarım kalıbına bir göz atmanızda fayda sağlayacaktır böylece aşağıda göreceğiniz şemayı daha rahat kavrıyor olabileceksiniz.
Strategy tasarım kalıbı ödeme sistemleri için kaftan biçilmiş bir yapıdır. Yukarıda tasarladığım yapı ödeme türleri, özel banka türlerini veya ödeme entegrasyonlarını desteklemektedir. Mesela bu yapıyı bir dosya üretme yapısına esnetemezsiniz 🙂 esnetirseniz baştan yazmış gibi olacaksınız. Şimdi bu yukarıda paylaştığım diyagramı maddeler halinde biraz açıklayayım;
- PaymentService sınıfı şimdilik üç ödeme tipini içermektedir, bunlar kredi kardı, havale / eft tarzında ödeme (account) bir de puan tabanlı ödeme sistemi. Bu ödeme türleri daha sonra PaymentStrategies arayüzü ile genişletip farklı ödemeler oluşturulabilir.
- PaymentContext, PaymentStategies arayüzünü kendisine uygulayan sınıfların çalıştırılabilmesini sağlayan yapıdır.
- CrediCardPaymentStrategy hangi banka entegrasyonun çalışacağına karar veren yapıdır.
- CardStrategies arayüzü farklı banka veya ödeme sistemlerin oluşturulmasını sağlayan yapıdır
Bu yazıda bahsetmediğim ve tasarıma dahil etmediğim IPN (Instant Payment Notification) yapısı var, bir sonraki yazımda IPN tasarımını yapıp size esnek bir yapı sunmaya çalışacağım, iyi okumalar bir sonraki yazıda görüşmek üzere.