«interfaces» etiketlenmiş sorular

Arayüze programlama gibi arayüzle ilgili tasarım hususları hakkında sorular.

5
C'de Arabirim Ayrımı ilkesi nasıl uygulanır?
Birkaç istemciye sahip olan 'M', 'C1', 'C2', 'C3' gibi bir modülüm var. Modül M'nin ad alanını, yani ortaya koyduğu API'lerin ve verilerin bildirimlerini başlık dosyalarına öyle bir şekilde atamak istiyorum - herhangi bir istemci için yalnızca gereksinim duyduğu veriler ve API'ler görünür; modülün ad alanının geri kalanı istemciden gizlenir, yani …
15 c  interfaces  solid 

5
IoC için arabirimler yerine Func kullanma
Bağlam: C # kullanıyorum Bir sınıf tasarladım ve onu izole etmek ve birim testini kolaylaştırmak için tüm bağımlılıklarından geçiyorum; dahili olarak nesne somutlaştırması yapmaz. Ancak, ihtiyaç duyduğu veriyi almak için arayüzlere başvurmak yerine, genel amaçlı Funcs'a ihtiyaç duyduğu veri / davranışı döndürerek başvurdum. Bağımlılıklarını enjekte ettiğimde bunu lambda ifadeleriyle yapabilirim. …

2
Artık bir Java Arayüzündeki tüm yöntem bildirimleri kamuya açık değil, yöntemler bu değiştiricilerle bildirilmeli mi?
Java 8'den başlayarak, defaultarayüzlere yöntemler tanıtıldı. Etkili, bu araçlar bir in değil tüm yöntemler bu interfacevardır abstract. Java 9 (belki) ile başlayarak, privateyöntemlere izin verilecektir. Bu, bir interfaceiçindeki tüm yöntemlerin olmadığı anlamına gelir public abstract. "Java arabirimindeki yöntemler publicerişim değiştiriciyle veya değiştiriciyle bildirilmeli mi?" /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m adresindeki Stack Overflow'da istendi Orada, …

1
İki Java 8 varsayılan yöntemini birbirleri açısından uygulamak iyi bir uygulama mudur?
Buna benzer iki yöntemle bir arayüz tasarlıyorum: public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } Uygulamaların yaklaşık yarısı sadece bir şeyi hesaplarken, diğer yarısı daha fazla hesaplayabilir. Bunun yaygın olarak kullanılan Java 8 kodunda emsali var mı? Haskell'in bazı …


5
Uygulamadan önce bir arayüz API'si yazmalı mıyım?
Son zamanlarda daha "organize" programlamaya giriyorum ve bir uygulamaya değil, bir arayüze programlamam gerektiğini öğreniyorum. Bunu göz önünde bulundurarak, mümkün olan yerlerde uygulamayı yazmadan önce arabirimlerdeki bir projeyi "taslak haline getirmek" daha iyi olur mu? Ve eğer durum buysa, 3. taraf kitaplıkların (örneğin Lidgren) kullanılması durumunda, bunları arayüzlere de sarmalı …


6
Arayüzün sadece bir kısmı nasıl uygulanır?
OOP'de gelişirken, bazen değiştiremeyeceğiniz bir kütüphane tarafından bir arayüz / sözleşme verilir. Bu arayüze J diyelim. Artık bu arabirimi uygulayan nesneleri tüketen A sınıfı bir nesneniz var. Inside Arayüz tanımlarının sadece küçük bir kısmına ihtiyaç vardır. Bazı nesne sınıfları proje sırasında benim tarafımdan oluşturuldu (bunlardan birine D tipi diyelim), bu …

1
Java Varsayılan Yöntem Kullanımı
Onlarca yıldır arayüzler olduğu durumda oldu sadece tek yöntem imzaları belirtmek için (yalnızca). Bize bunun "bir şeyler yapmanın doğru yolu" olduğu söylendi. Sonra Java 8 çıktı ve şöyle dedi: Şimdi, varsayılan yöntemleri tanımlayabilirsiniz. Koşmalıyım, güle güle. Bunun hem deneyimli Java geliştiricileri hem de son zamanlarda (son birkaç yıl) geliştirmeye başlayanlar …

3
Arabirimleri içeren bir simülasyon için bu kötü OOP tasarımı mı?
Vampirleri, Kurtları, İnsanları ve Kamyonları simüle etmek için kendi küçük OOP programımı tasarlıyorum ve kendi sınırlı arayüzler arayüzümü uygulamaya çalışıyorum. ( Ben hala burada soyutlama ve henüz kod uygulaması yok, bu yüzden OOP tasarımı bir soru ... sanırım!) Bu sınıflar arasında 'ortak davranış' aramak ve bunları arayüz olarak uygulamakta haklı …

4
Özdeş imzalara sahip iki arayüz
Kartların iki önemli özelliğe sahip olduğu bir kart oyunu modellemeye çalışıyorum: Birincisi bir etkidir. Bunlar, kartı oynadığınızda meydana gelen oyun durumundaki değişikliklerdir. Etki için arayüz aşağıdaki gibidir: boolean isPlayable(Player p, GameState gs); void play(Player p, GameState gs); Ve ancak maliyetini karşılayabiliyorsanız ve tüm etkileri oynatılabiliyorsa kartın oynanabilir olduğunu düşünebilirsiniz. Şöyle …
13 interfaces 


4
C ++ ve Java'daki soyut sınıflar / arayüzler için farklı bir kullanım gerekçesi var mı?
Herb Sutter'e göre, uygulamayı mümkün olduğunca ayrıştırmak için soyut arayüzleri (tüm saf sanal fonksiyonlar) C ++ 'daki soyut sınıflara tercih etmeliyiz. Şahsen bu kuralı çok yararlı bulsam da, yakın zamanda birçok Java programcısı olan bir ekibe katıldım ve Java kodunda bu kılavuz mevcut görünmüyor. Fonksiyonlar ve uygulamaları soyut sınıflarda çok …

4
Arabirimler ve yöntem imzaları telif hakkı ile korunuyor mu?
Örneğin, Microsoft'un .Net System.Random sınıfıyla tam olarak aynı amaç ve yöntem imzalarına sahip Random adlı bir sınıf yazarsam telif hakkı ihlali oluyor mu? Hangi dilde yazıldığı fark eder mi? Bu durumda, yerleşik bir tohumlanmış PRNG sınıfından yoksun ActionScript'te kullanmak için bir Rasgele sınıf yazmak istiyorum. Herkesin yazılımın hangi yönlerinin korunduğunu …

3
Kalıtım üzerine kompozisyon ama
Kendime yazılım mühendisliğini öğretmeye çalışıyorum ve beni şaşırtan bazı çelişkili bilgilere karşı geliyorum. OOP ve soyut sınıfların / arayüzlerin ne olduğunu ve nasıl kullanıldığını öğreniyorum, ama sonra 'kompozisyonu kalıtımdan yana tutması' gerektiğini okuyorum. Kompozisyon, bir sınıfın bu yeni nesnenin işlevselliğini kullanmak / etkileşimde bulunmak için başka bir sınıfın nesnesini oluşturması …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.