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

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

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток, начал читать в книге про статический метод фабрика и не могу понять его смысла в книге приведен пример:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2018, 19:17
Ответы с готовыми решениями:

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

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

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

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

5
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
08.07.2018, 19:32 2
Видимо имеется в виду разница между
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
6492 / 3903 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
08.07.2018, 19:42 3
От оно, Михалыч ))
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  [ТС] 4
amr-now, Someone007, спасибо ребята!! правда не пойму в чем тут фабрика ( фабричный метод это же тоже самое что и паттерн фабрика?) или это разные вещи?
0
Эксперт JS
6492 / 3903 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
08.07.2018, 20:25 5
Esso11,
Фабрики:
- нестатический фабричный метод.
- статический фабричный метод.
- нестатическая простая фабрика. (если в параметрах метода есть переключалка, какой тип экземпляра создавать)
- статическая простая фабрика. (если в параметрах метода есть переключалка, какой тип экземпляра создавать)
- "фабричный метод".
- "абстрактная фабрика".

Добавлено через 7 минут
----
Причем у банды четырех класс Client в Абстрактной фабрике - это паттерн Фасад для симбиоза с паттерном Абстрактная Фабрика. Т.е. класс Client не является строго составной частью паттерна Абстрактная фабрика.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
08.07.2018, 20:45  [ТС] 6
amr-now, мало что понял надо читать), спасибо еще раз
0
08.07.2018, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2018, 20:45
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru