5

PowerPoint veya Illustrator gibi vektör grafik uygulamaları için en iyi tasarım desenleri/mimarileri nelerdir? Özellikle karmaşık grafiksel nesneler üzerinde araç-kullanıcı etkileşimi ve eylemini yapılandırmak için (ana-çocuk ilişkisi, şekil ve düzen üzerindeki geometrik kısıtlamalar). Aşağıdaki ileVektörel Grafik Düzenleyicisi için tasarım deseni

Herhangi hakkında düşünceler ya da deneyimler:

  1. Davranışı - Adorner - Davranış Yığın/Servis - Görünüm - Görünüm Modeli Microsoft

  2. EditPolicy - EditPart - Görünüm - Model GEF

cevap

3

Denetleyiciler için iç içe geçmiş sonlu durum makineleri. Kontrolörlerden görünümün ayrılması (MVC veya benzeri). Her zaman benim için çalıştı.

Güncelleme: Bağlantılarınızı okumak için biraz zaman geçirdim. Bazı arka plan: 25 yıldır bu editörler üzerinde çalışıyorum ve çalışıyorum. Benim tavsiyem, kontrolör, MVC veya benzeri olarak iç içe FSM'ler süper tasarım deseni olarak adlandırılabilir, çünkü bu tasarım bileşenlerinin yıllar boyunca farklı tasarımlarda, her defasında farklı bileşenler için farklı isimler kullanarak birçok kez görülebildiğini görebilirsiniz. Microsoft patentinin saçmalığı, fikirlerin çok eski olduğu ve yeni isimler verildiği. Sağladığınız diğer bağlantıya bakarsanız, birçok benzerliğin olduğunu görebilirsiniz (EditPart == Behavior == Sonlu Durum Makinesi). Bu nedenle süper model şu şekildedir: Harel durum çizelgesinde olduğu gibi iç içe geçmiş sonlu durum makineleri. Süper devletler, birçok alt eyalette ortak davranışları ele alır; Alt durumlar daha spesifik davranışları ele alır. Bir süper durum bir süper sınıf veya ayrı bir nesne örneği olarak uygulanabilir. Her iki durumda da, genel uygulamada, soyut olarak, alt durum olan bir mevcut durumunuz vardır. Alt durum bir giriş mesajını işleyemezse, süper duruma geçer (yalnızca miras kullanarak veya iletiyi yığındaki başka bir nesneye ileterek).

Durum geçişleri giriş mesajları tarafından tetiklenir. Bir giriş mesajı, bir süslemede bir kullanıcı eylemi olabilir (ve bir çağrının çağrılması için bir alt durumun adı süslenmiş olabilir). Ya da bir klavye olayı olabilir. Komut olarak adlandırılan bir giriş mesajı görebilirsiniz. Her durum, başlatmayı gerçekleştirdiği bir giriş yöntemine ve işlenmemiş değişiklikleri değiştiren bir çıkış yöntemine sahip olacaktır. Değişiklikler tipik olarak işlemler kullanılarak gerçekleştirilir ve taahhüt edilen bir yığın işlem yığını geri alma kümesini oluşturur.

+0

Tam cevap için teşekkürler Frank! Davranış kümeleriyle (FSM'ler) tam olarak söylediğin gibi ayarladık - eğer yukarıdaki davranışlar onları işleyemiyorsa, olayları yığının içinden geçiriyoruz. Şu anda View ve ViewModel'in bir karışımı var, ancak onları ayırmak ve katı MVVM'ye sahip olmak için hareket ediyoruz. – Alfa07

+0

2 soru: Hangi durumda bir işlemden çıkacaksınız? Veritabanlarında yabancı bir anahtarın başarısız olduğunu hayal edebilirim, ancak grafiklerde tipik bir senaryo nedir? Bu konuyu tartışan herhangi bir kitap biliyor musunuz? – Wout

+0

İşlem çıkışı, tasarladığınız durum makinesine göre değişir. Tipik olarak, çıkış tuşuna basılması işlemi iptal eder ve iptal eder. Fare düğmesini kaldırmak işlemden çıkacak ve taahhüt edecektir. Ancak, taahhüt veya iptal edilmeye neden olan başka mesajlar olabilir - belki de çelişen başka bir mesaj gelir. Tanıdığınız bazı editörlerle oynayın ve belgelendirildiyse durum makinelerini eşleştirebilirsiniz. Hayır ben herhangi bir kitap ile aşina değilim; bilgim deneyimden geliyor. –

İlgili konular