2012-01-25 12 views
6

aşağıdaki gibi bir türü için ihtiyaç şey zaten Java içine inşa edilmesi gerektiği gibi, böylece her yerde olacağını görünüyor:Yürütme (Tt) yöntemini garanti eden yerleşik bir Java türü var mı?

public interface Executer<T> { 
    void execute(T object); 
} 

Daha sonra bir demet çağırır bu önemsiz örnekte olduğu gibi diğer sınıflarında kullanılabilir bir nesnede yürütücüler.

class Handler<T> implements Executer<T> { 
    List<Executer<T>> executerList; 

    Handler(List<Executer<T>> executer) { 
     this.executerList = executer; 
    } 

    void execute(T t) { 
     for (Executer<T> executer : this.executerList) { 
     executer.execute(t); 
     } 
    } 
} 

Yerleşik türde bir eşdeğer var mı yoksa ortak bir kitaplığa eşdeğer mi? Bu kavram için bir isim var mı?

+1

Yürütücünüzün arabirimleri, belirli bir T türünde çalıştırılmak zorunda olduklarından, ne yapmalısınız? – wmorrison365

+4

'Runnable', aradığınız öğeye yakın mıdır? – aardvarkk

+0

Runnable'ın yeterli olacağını kabul ediyorum. Yapımın ne eklediğinden emin değilim. Aynı zamanda eşdeğer Executor sınıfları da var ama bunlar Runnable'ı çalıştırıyor ve eşzamanlı çağrıları yönetmek için var. – wmorrison365

cevap

4

Kavramın isminin strategy pattern olduğunu düşünüyorum. Etkili bir şekilde bir algoritmayı kapsıyorsunuz ve bu da bir stratejiyi bir diğeriyle değiştirmeyi veya bir takım stratejileri uygulamayı kolaylaştırıyor.

Bu tasarım deseninin uygulanması çok kolaydır ve execute yönteminin yalnızca belirli bir türde tek bir bağımsız değişken alması gerekmez. Bu nedenle, yerleşik bir Java türü bulacağınızdan şüphem yok, ama iyi bilinen bir tasarım deseni.

+0

Evet, veya muhtemelen Komut düzeni. Bu endişelerin iyi bir şekilde ayrılmasını sağlar. – wmorrison365

+0

Oh, elbette bu strateji modeli. Onu neden tanıyamadığımı bilmiyorum.Bu özel arayüzün yerleşik bir türü garanti etmek için yeterince sık gelmediğine biraz şaşırdım. –

+0

@glenviewjeff Peki, o zaman bir Executor, bir Executor için bir tane gerekir, bir Executor , vb için bir dahili türü olarak biraz garip bahis olabilir ... özellikle arayüzü tanımlarken Özel kullanım durumunuz için çok kolay. –

2

En yakın Ben Guava'nın Function<F,T> olduğunu biliyorum.

Standart kitaplıkta, tam olarak istediğiniz şeyi yapan bir şey olduğunu sanmıyorum. Runnable biraz yakın, ancak hiçbir argüman almıyor.

P.S. Bu kavram için "işlev" veya "functor" ın tam olarak doğru isim olduğunu düşünüyorum.

+0

Guava'nın 'Function' tipi değiştirilse de benim kullanımımın kabul edileceğini kabul ediyorum Fonksiyonun niyetine uymuyor. –

İlgili konular