Birçok işletim sistemi üzerinde çalışan terminal projesi

Mediator desing pattern incelerseniz aslında az çok kafanızda senaryo canlanır. Python hakkında derinlemesine bilgi sahibi değilim. Ama C# da demek istediğim yapıyı basit düzeyde gerçekleştirdim. İncelemeni öneririm.
Hocam elinize sağlık. Sanırım CommandConfiguration ile hafif kendi IoC containerinizi yapmışsınız. Bunun yerine Autofac, Ninject vb. kullanabilir miydik?
 
Hocam elinize sağlık. Sanırım CommandConfiguration ile hafif kendi IoC containerinizi yapmışsınız. Bunun yerine Autofac, Ninject vb. kullanabilir miydik?
Autofac aklıma gelmişti. Ama bu paketleri kullanırken genelde şu şekilde kullanıyordum; interface ve bir sınıf giriyoruz. Bizim bu projede ise tek bir interface ve birden fazla sınıf mevcut. Bu durumu bu paketler ile çözebiliyor muyuz emin değildim. Kendim yazayım dedim : )
 
Mediator desing pattern incelerseniz aslında az çok kafanızda senaryo canlanır. Python hakkında derinlemesine bilgi sahibi değilim. Ama C# da demek istediğim yapıyı basit düzeyde gerçekleştirdim. İncelemeni öneririm.
Şuan projenizi ve Mediator Design Pattern'i detaylı olarak inceledim. Galiba şuan kafamda bir fikir oluştu. Teşekkür ederim hocam:

@RaSGooL
Sonunda projeyi geliştirmek için vakit bulabildim(Bu linkten projeye ulaşabilirsiniz: GitHub - userdotcs/AllTerm). Aslında Java ile yazmayı düşünüyordum ancak dosya işlemlerinde bir sorun oluştuğu için Python kullandım. En yakın zamanda Java ve C# ile de yazmayı düşünüyorum bu projeyi. Proje için FCode'u geliştirmek için kullandığım sisteme benzer bir sistem kullandım. Mantık olarak şu şekilde:
Bir kaynak dosyasında terminale ait detayları tuttum(Bulunulan konum var şu anlık.).
Ardından temel işlemleri(yukarı directory, kullanıcı pathini bulma vs.) belli bir kaynak dosyada topladım. Bura sayesinde yapmak istediğim işlemleri tek sınıf sayesinde halledebiliyorum.
Komut ve komut işleme kısmı için komutları kapsayacak bir class oluşturdum. Komutları bu class üzerinden türettim(Siz komutların isimlerini başka bir classta tutmuşsunuz. Ben bunu komut özelliği olarak komut sınıfının içinde tuttum ve contructor içinde tanımını yaptım. Çünkü tüm komutlar tek kelimeden oluşuyor, parametre gibi işlemler yok.). Komutun işlevini ise farklı bir fonksiyon ile tuttum. Buradan yapılacak işlemleri ve throwlanabilecek exceptionları rahatça tanımlayabiliyorum. Komut işlerken ise kullanılabilecek komutları bir listte tuttum ve basit bir for döngüsü ile komut ile işlemin uyuşup uyuşmadığını kontrol edip komutu çalıştırabiliyorum.
 
Son düzenleme:

Yeni konular

Geri
Yukarı