Дизайн на основе политик Java
У меня есть цикл while, и пользователь должен иметь возможность решить, когда цикл прекратится. Через x секунд, после x циклов... Эта проблема должна быть реализована в соответствии с политикой. Я знаю, как сделать это в C++, но не могу заставить его работать в Java.
Что я делаю сейчас, так это следующее.
Существует класс Auctioneer с методом "start ()", где должны применяться политики:
public <E extends AbstractEndAuctionPolicy> void start(E policy) { //use policy here }
Поскольку AbstractEndAuctionPolicy имеет метод "endAuction()", мы можем сделать: policy.endAuction(). В C++ нет необходимости "расширяет AbstractEndAuctionPolicy" ...
Но я не могу понять, как использовать этот метод, следующее не работает:
this.auctioneer.start<NewBidPolicy>(n);
Надеюсь, что вы, ребята, сможете мне помочь и немного рассказать об основанном на политике дизайне в Java, потому что Google не дает мне ответов.
Заранее спасибо.
1 ответ
Обычно компилятор может определить общий тип из типа параметра, то есть просто
this.auctioneer.start(n);
может работать (трудно сказать наверняка, так как вы даете так мало контекста). Но если это не удовлетворяет компилятору, попробуйте
this.auctioneer.<NewBidPolicy>start(n);
Поскольку дженерики Java гораздо менее мощны, чем шаблоны C++, я даже не слышал, чтобы термин "политика" использовался в сфере Java. Тем не менее, ваш подход кажется хорошим приближением.