Форум программистов, компьютерный форум, киберфорум
Наши страницы
ООП и паттерны
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
vladimircape
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 34
1

Какие паттерны можно применить в данной задачи

25.11.2013, 10:46. Просмотров 699. Ответов 3
Метки нет (Все метки)

Было задание ,интересно, как можно еще решить(какие паттерны проектирования можно применить)
есть сущности пользователь и статья.
Пользователь должен иметь возможность создать статью
Возможность получить автора статьи
Возможность получить все статьи конкретного пользователя;
Возможность сменить автора статьи.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 10:46
Ответы с готовыми решениями:

Какие паттерны можно использовать для совершенствования приложения
Доброго времени суток! У меня есть приложение реализованное на Qt C++ - тестирование студентов....

Какие паттерны вы используете чаще всего?
Я не сильно знаком с паттернами. Более-менее представляю себе MVC, Фабрику, может еще парочку. Хочу...

Игра точки. Какие паттерны можно применить?
Пишу курсач по ООП на Java с использованием Swing, тема - игра "точки". Нужно применить хотя бы по...

Как и какие идиомы и паттерны можно (и лучше) применять?
Здравствуйте. Писал я проги для себя ну и так по мелочи, для абы кого, да и проги абы как, не...

Можно ли применить решением к данной функции
Сама функция указана на картинке Правила форума: 5.18. Запрещено размещать задания и решения в...

3
VBProgr
31 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 19
17.12.2013, 17:31 2
Паттерны не предназначены для того, чтобы думать в стиле "какие паттерны я бы мог применить здесь". Паттерны усложняют архитектуру. Пишите проще.

По теме - подумайте о том, что может измениться в вашей программе и как лучше сделать так, чтобы эти изменения можно было сделать написанием нового кода, а не изменением существующего.
0
vladimircape
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 34
17.12.2013, 18:16  [ТС] 3
Это такое было онлайн тестовое задание в одной компании , я так и не понял что они хотели увидеть
0
VBProgr
31 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 19
17.12.2013, 19:01 4
Если по простому:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
    
    
    class User
    {
 
    }
 
    interface IArticle
    {
        User Author { get; set; }
    }
 
    class Article : IArticle
    {
        private User _author;
        public User Author
        {
            get { return _author; }
            set
            {
                if (_author == value) return;
                _author = value;
                var d = OnAuthorChanged;
                if (d != null) d(value);
            }
        }
 
        public event Action<User> OnAuthorChanged;
 
        public Article(User author)
        {
            if (author == null) throw new ArgumentNullException("author");
            _author = author;
        }
    }
 
    class Repository
    {
        readonly Dictionary<User, HashSet<IArticle>> _articlesByUser = new Dictionary<User, HashSet<IArticle>>();
 
        public IArticle CreateArticle(User author)
        {
            if (author == null) throw new ArgumentNullException("author");
            var article = new Article(author);
            var articles = GetArticlesHashSetByUserSafe(author);
            articles.Add(article);
            article.OnAuthorChanged +=
                newAuthor =>
                {
                    articles.Remove(article);
                    GetArticlesHashSetByUserSafe(newAuthor).Add(article);
                };
            return article;
        }
 
        public IEnumerable<IArticle> this[User author]
        {
            get
            {
                return GetArticlesHashSetByUserSafe(author);
            }
        }
 
        private HashSet<IArticle> GetArticlesHashSetByUserSafe(User author)
        {
            HashSet<IArticle> articles;
            if (!_articlesByUser.TryGetValue(author, out articles))
                _articlesByUser.Add(author, articles = new HashSet<IArticle>());
            return articles;
        }
    }
Правда, здесь будет утечка памяти - User-ы без Articles не удаляются из словаря. Но это легко исправить

Можно усложнять, опять же в зависимости от возможных изменений. Разные репозитории с фабричным методом, что-то еще?..
0
17.12.2013, 19:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 19:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Какие средства ООП можно применить для описания Игрока и Противника?
Всем доброго времени суток! Ситуация следующая: написал игру на курсовой в универе. Основная...

Подскажите, какие формулы использовать для решения данной задачи?
Срок службы прибора представляет собой случайную величину, имеющую нормальное распределение, с...

Какие проблемы Вы видите при решении данной задачи? Предложите алгоритм решения
Здравствуйте, помогите с заданием для зачета пожалуйта. Информация о том, сколько людей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.