0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 34
1

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

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

Было задание ,интересно, как можно еще решить(какие паттерны проектирования можно применить)
есть сущности пользователь и статья.
Пользователь должен иметь возможность создать статью
Возможность получить автора статьи
Возможность получить все статьи конкретного пользователя;
Возможность сменить автора статьи.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2013, 10:46
Ответы с готовыми решениями:

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

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

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

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

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

По теме - подумайте о том, что может измениться в вашей программе и как лучше сделать так, чтобы эти изменения можно было сделать написанием нового кода, а не изменением существующего.
0
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 34
17.12.2013, 18:16  [ТС] 3
Это такое было онлайн тестовое задание в одной компании , я так и не понял что они хотели увидеть
0
31 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 20
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2013, 19:01

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

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

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

Какие методы можно использовать для решения данной математической модели?
Какие методы можно использовать для решения данной математической модели?И как правильно это...


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

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

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