Останнім часом я розглядаю створення свого роду"toolbox" для себе в java. Він складав би стандартні алгоритми та структури даних, які часто використовуються, але біль, що потрібно реалізувати. (Я думаю графіки, дерева тощо)
Який би найкращий спосіб зробити це? Я думав про те, що використовують загальні ознаки або використовують абстрактний клас. Таким чином, я міг би мати будь-який об'єкт, який хотів використати методи, просто надати метод getGraphData () або щось подібне.
Я думаю, що генерики можуть бути кращими, хоча б тому, що абстрактний клас змусить мене успадкувати від нього, що може стати проблематичним.
Відповіді:
3 для відповіді № 1Це називається бібліотекою ...
Об'єкти загального призначення повинні бути в Javaбібліотека Якщо відсутні деякі потрібні матеріали, ви можете спробувати додаткові бібліотеки, такі як Колекції Google. Можливо, вам потрібні бібліотеки, специфічні для домену.
0 для відповіді № 2
два способи про це:
Шлях 1:
- Створіть графік класу
- Створіть методи в класі Graph, кожен з яких відповідає вашому алгоритму.
Шлях 2:
- Створити графік класу (чисто структура даних)
- Створіть алгоритм класу
- Алгоритм підкласу для визначення кожного вашого нового алгоритму.
Звичайно, найкраще, якщо ви подивитеся на STLалгоритми і моделюйте алгоритми графа аналогічним чином. Ви навіть можете відкрити джерело своїх структур даних та асоційованих алгоритмів. Таким чином, громада може піклуватися про нові винагороди, міркування щодо ефективності, інтеграцію в / з існуючими бібліотеками тощо.
Джордж
0 для відповіді № 3
У більшості випадків слід використовувати вже існуючі бібліотеки, написані людьми, які дійсно знають, що вони роблять - ці бібліотеки були ретельно протестовані і впроваджені з ефективними алгоритмами для досягнення високої продуктивності.
Однак, якщо робити власні бібліотеки, я хотів би намагатися наслідувати найкращі - подивіться, як Колекції Java і Колекції Google розроблені. Подивіться, які інтерфейси надаються (List
, Map
і т. д.) і які абстрактні класи і реалізації існують.
Тоді, якщо це для навчальних цілей, йти впереді напишіть свої власні реалізації. Це повинно бути весело, захоплююче і безперечно складним завданням. Спробуйте дізнатись, чи поведінка така, як очікувалося, - напишіть тести, щоб переконатися, що вони охоплюють типовий спосіб використання, а також крайові випадки.
Однак я рекомендую не використовувати його для реального використання, крім використання в навчальних закладах. Це не велика справа, щоб помилятися під час навчання, однак у реальному світі це дуже різні історії.