Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Про интерфейсы и их реализации (http://www.flasher.ru/forum/showthread.php?t=215644)

Appleman 13.08.2018 17:30

1. Понял-отстал.
2. Изначально есть оружие колющее и режущее. Пока публичные свойства и методы у них одинаковые, но кое-что уже отличается, например, это влияет на выборе варианта атаки. Изначально думал сделать наследников, но появились такие экземпляры, которые относятся сразу к двум типам. Пришлось сделать вектор строковых ID, со всеми его неудобствами. Сейчас, когда я чудесным образом открыл для себя всю прелесть интерфейсов, пришёл к заключению, что правильнее и компактнее будет ввести соответствующие интерфейсы, присваивать их и проверять экземпляры на принадлежность нужному.

caseyryan 13.08.2018 17:56

Цитата:

Сообщение от Appleman (Сообщение 1205873)
Ребята, ещё пара вопросов по интерфейсам:
1. Возможно ли создать интерфейс, обязывающий классы реализовывать определённые ПРИВАТНЫЕ методы?


Спасибо.

Интерфейсы, всегда и везде, объявляют только public методы и функции. Поэтому в интерфейсах и не указывается модификатор доступа, ибо он и так понятен
Цитата:

2. Что думаете на счёт использования интерфейсов-"пустышек" (т.е. без прописанных методов) для целей маркировки объектов, тем самым реализуя множественное типирование (как альтернатива излюбленной тактике зафигачить строковые ID)?
Никогда не использую. По-моему, если приходится юзать такой подход, то что-то не так с архитектурой приложения. По сути, это можно использовать только лишь для проверки типа. Чтобы сделать с таким объектом что-то другое, тебе все равно придется приводить его к какому-то другому типу

Tails 13.08.2018 18:24

Цитата:

Сообщение от Appleman (Сообщение 1205873)
Ребята, ещё пара вопросов по интерфейсам:
2. Что думаете на счёт использования интерфейсов-"пустышек" (т.е. без прописанных методов) для целей маркировки объектов, тем самым реализуя множественное типирование (как альтернатива излюбленной тактике зафигачить строковые ID)?
Спасибо.

На практике такое встречал редко. В целом, это избыточно.

Подумай о том, чтобы вынести все данные игровых сущностей в отдельные классы/таблицы/списки, а не хранить их в виде типов, иерархий наследования, наличии строковых свойств и т.д.

Wolsh 13.08.2018 21:08

Маркерные интерфейсы используются, когда надо выразить не ЧТО ДЕЛАЕТ объект, а ЧТО МОЖНО СДЕЛАТЬ с ним. Что значит "сделать с ним"? Ну, обычно это значит "передать аргументом в какую-то функцию", ибо "делают" у нас функции. Например, можно пометить какие-то предметы разных классов как ДобавлябельныеВИнвентарь. Но, как правильно заметил Кейси, это лишь отодвигает проблему вглубь — в инвентаре все-равно придется разбираться что это за фрукт. Тем не менее, положа руку на сердце, добавляемые в инвентарь предметы могут на самом деле не иметь общих методов, так как используются совершенно по-разному, и даже индивидуальную иконку иметь не обязаны, а такие поля как name или ID — общие для ВСЕХ объектов, а не только Добавлябельных. Так что в каких-то ситуациях это может быть инструментом, упрощающим архитектуру — если какой-то метод реально готов принимать для обработки объекты разных типов.

Wormhole 14.08.2018 01:50

Цитата:

Сообщение от Appleman (Сообщение 1205873)
2. Что думаете на счёт использования интерфейсов-"пустышек" (т.е. без прописанных методов) для целей маркировки объектов, тем самым реализуя множественное типирование (как альтернатива излюбленной тактике зафигачить строковые ID)?

Не легче ли создать enum, хранящий все ID? В AS3 нет перечисляемого типа, но его можно легко симулировать

Добавлено через 3 минуты
Цитата:

Сообщение от Appleman (Сообщение 1205877)
2. Изначально есть оружие колющее и режущее. Пока публичные свойства и методы у них одинаковые, но кое-что уже отличается, например, это влияет на выборе варианта атаки. Изначально думал сделать наследников, но появились такие экземпляры, которые относятся сразу к двум типам. Пришлось сделать вектор строковых ID, со всеми его неудобствами. Сейчас, когда я чудесным образом открыл для себя всю прелесть интерфейсов, пришёл к заключению, что правильнее и компактнее будет ввести соответствующие интерфейсы, присваивать их и проверять экземпляры на принадлежность нужному.

Код AS3:

public var type:WeaponType = WeaponType.STITCHING

Добавлено через 6 минут
Цитата:

Сообщение от GBee (Сообщение 1205876)
1. В клуб проходят только негры до 25 лет

Любопытный клуб :)

GBee 14.08.2018 12:15

Цитата:

Сообщение от Wormhole (Сообщение 1205881)
Любопытный клуб :)

Код AS3:

IYoungNiggerable



Часовой пояс GMT +4, время: 08:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.