Я пытаюсь создать модуль Java с абстрактным кодом, который в дальнейшем позволит мне создавать различные карточные игры, например (Покер, Дурак, Уно и т. д.). Идея состоит в том, чтобы сделать код в модуле расширяемым и пригодным для повторного использования. Примеры кода приведены ниже:
/* Card */
public abstract class AbstractCard {
}
// Standard card
public final class StandardCard extends AbstractCard {
private final Suit suit;
private final Rank rank;
}
// I can introduce some other card. For example for Game Uno and etc.
/* Hand */
public abstract class AbstractHand {
protected final List cards;
protected HandState state;
}
// Common type of deck where you see all cards and you can choose which to use
public final class StandardHand extends AbstractHand {
public C getCard(int index) {
return cards.remove(index);
}
}
// You unable to see cards in your hand and only take the top one
public final class BlindHand extends AbstractHand {
public C getCard() {
return cards.remove(cards.size() - 1);
}
}
/* Deck */
public abstract class AbstractDeck implements Iterable {
private final List cards;
private int index;
}
// Then I can have standard(unmodifiable) deck / modifiable(allows to add cards back to deck) deck / etc.
// Further, everywhere where I want to work with Abstract + Card/Hand/Deck (btw I have also
// Board and Table) I need to provide types, like this:
private final StandardTable table;
// Or passing in method:
default void splitCardsBetweenHands(D deck, List hands) {
hands.forEach(hand -> {
while (hand.size() < 6 && deck.iterator().hasNext()) {
hand.addCard(deck.iterator().next());
}
});
}
// It results to complex method creation but gives a lot of flexibility
// but I feel that as my code grows I may encounter more nested constructions
// somehow I want to avoid that.
// I don't remember that any Java library provides example where you have to
// write type more than 2/3 times.
Как сохранить абстрактность кода, не заморачиваясь с приведением типов и не вводя тип слишком часто?
Я пытаюсь создать модуль Java с абстрактным кодом, который в дальнейшем позволит мне создавать различные карточные игры, например (Покер, Дурак, Уно и т. д.). Идея состоит в том, чтобы сделать код в модуле расширяемым и пригодным для повторного использования. Примеры кода приведены ниже: [code]/* Card */ public abstract class AbstractCard { } // Standard card public final class StandardCard extends AbstractCard { private final Suit suit; private final Rank rank; } // I can introduce some other card. For example for Game Uno and etc.
/* Hand */ public abstract class AbstractHand { protected final List cards; protected HandState state; } // Common type of deck where you see all cards and you can choose which to use public final class StandardHand extends AbstractHand { public C getCard(int index) { return cards.remove(index); } } // You unable to see cards in your hand and only take the top one public final class BlindHand extends AbstractHand { public C getCard() { return cards.remove(cards.size() - 1); } }
/* Deck */ public abstract class AbstractDeck implements Iterable { private final List cards; private int index; } // Then I can have standard(unmodifiable) deck / modifiable(allows to add cards back to deck) deck / etc.
// Further, everywhere where I want to work with Abstract + Card/Hand/Deck (btw I have also // Board and Table) I need to provide types, like this: private final StandardTable table; // Or passing in method: default void splitCardsBetweenHands(D deck, List hands) { hands.forEach(hand -> { while (hand.size() < 6 && deck.iterator().hasNext()) { hand.addCard(deck.iterator().next()); } }); } // It results to complex method creation but gives a lot of flexibility
// but I feel that as my code grows I may encounter more nested constructions // somehow I want to avoid that. // I don't remember that any Java library provides example where you have to // write type more than 2/3 times. [/code] Как сохранить абстрактность кода, не заморачиваясь с приведением типов и не вводя тип слишком часто?
Я создавал базовый класс, чтобы все привязки для дочерних элементов были установлены в базе
Я сделал это до этого
abstract class BaseActivity2 : AppCompatActivity() {
private var viewBinding: B? = null
private var baseViewModel: T? = null
Я пытаюсь выполнить несколько запросов GraphQL к API GitHub.
Например, следующий запрос вернет содержимое файла README.md репозитория:
query GetReadmeMD($owner: String!, $repo: String!) {
repository(owner: $owner, name: $repo) {
object(expression:...
Есть ли веская причина избегать неиспользуемых операторов импорта в Java? Насколько я понимаю, они предназначены для компилятора, поэтому множество неиспользуемых импортов не окажут никакого влияния на скомпилированный код. Это просто для того,...
Итак, я использовал приведенный ниже код, чтобы получить список, который мне нужен для моего веб -сайта с моего API. Недавно я конвертировал сертификат веб -сайта API Hosting для обеспечения безопасности, выпуск теперь является моим API не принимает...