Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685

Использование статической фабрики класса

08.07.2018, 19:17. Показов 3245. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, начал читать в книге про статический метод фабрика и не могу понять его смысла в книге приведен пример:
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
using System;
class MyClass {
int a, b;
// Создать фабрику для класса MyClass.
static public MyClass Factory(int i, int j) {
MyClass t = new MyClass();
t.a = i;
t.b = j;
return t; // возвратить объект
}
public void Show() {
Console.WriteLine("а и b: " + a + " " + b);
}
class MakeObjects {
static void Main() {
int i, j;
// Сформировать объекты, используя фабрику.
for(i=0, j=10; i < 10; i++, j--) {
MyClass ob = MyClass.Factory(i, j); // создать объект
ob.Show();
}
Console.WriteLine();
}
}
а так же комментарий к примеру: Теперь нет необходимости создавать объект класса MyClass, перед тем как пользоваться
фабрикой этого класса.

Если не сложно кто может объяснить слова автора. Спасибо за лояльность и терпение.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.07.2018, 19:17
Ответы с готовыми решениями:

Можно ли присвоить статической переменной некоторое значение, когда еще не создано никаких объектов класса?
Можно ли присвоить статической переменной некоторое значение, когда еще не создано никаких объектов класса?

Использование метода из наследованного класса к объекту базового класса
Есть метод public void OpExp() { if (Person._age&lt;18) Console.WriteLine(&quot;Вы не можете...

Использование нестатической функции в статической функции
Имеется функция которая наследуется классом. Но в классе есть еще статические классы внутри которых статические функции. Как можно было бы...

5
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
08.07.2018, 19:32
Видимо имеется в виду разница между
C#
1
MyClass ob = MyClass.Factory(i, j); // создать объект
и
C#
1
2
3
MyClass factory = new MyClass();
...
MyClass ob = factory.Factory(i, j); // создать объект
если бы метод Factory не был статическим.
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
08.07.2018, 19:42
От оно, Михалыч ))
C#
1
static public MyClass Factory(int i, int j)
А смысл, что статический фабричный метод внутри оператором new создает экземпляр класса.

Добавлено через 2 минуты
Цитата Сообщение от Esso11 Посмотреть сообщение
Теперь нет необходимости создавать объект класса MyClass, перед тем как пользоваться
фабрикой этого класса.
Любой статический метод вызывается именем класса, потом точка, потом имя метода, потом в скобках параметры метода.

-----
Есть хитрость - фабричный метод создает экземпляр необязательно класса, в котором находится.
Может создавать экземпляр любого класса. Т.е.
C#
1
AnotherClass o = MyClass.Factory(i, j);
1
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
08.07.2018, 19:48  [ТС]
amr-now, Someone007, спасибо ребята!! правда не пойму в чем тут фабрика ( фабричный метод это же тоже самое что и паттерн фабрика?) или это разные вещи?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
08.07.2018, 20:25
Esso11,
Фабрики:
- нестатический фабричный метод.
- статический фабричный метод.
- нестатическая простая фабрика. (если в параметрах метода есть переключалка, какой тип экземпляра создавать)
- статическая простая фабрика. (если в параметрах метода есть переключалка, какой тип экземпляра создавать)
- "фабричный метод".
- "абстрактная фабрика".

Добавлено через 7 минут
----
Причем у банды четырех класс Client в Абстрактной фабрике - это паттерн Фасад для симбиоза с паттерном Абстрактная Фабрика. Т.е. класс Client не является строго составной частью паттерна Абстрактная фабрика.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
08.07.2018, 20:45  [ТС]
amr-now, мало что понял надо читать), спасибо еще раз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2018, 20:45
Помогаю со студенческими работами здесь

Использование фабрики для шаблонного класса
Вот класс template &lt;class T&gt; class ConcreteConverter { T _value; long long _maxValue; long long _minValue; public: ...

Создание экземпляра класса-фабрики BorderPaneBuilder
Вот прочитал в книге: Компонент BorderPane представлен классом javafx.scene.layout.BorderPane, экземп- ляр которого может быть...

Объявление объекта класса fstream в качестве статической компоненты другого класса
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Изменение статического закрытого элемента данных класса посредством статической элемент-функции класса
Добрый день. Не могу разобраться, как изменить закрытую статическую переменную класса. Вот код. Ошибка &quot;unresolved external&quot;. ...

Создание статической функции класса, которая принимает экземпляр этого же класса как объект
Привет. Есть такой код class Model { public: Model(); Model(int verticesSize, int facesSize); ~Model(); static void...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru