File tree Expand file tree Collapse file tree 9 files changed +180
-2
lines changed
Patterns/Creational/FactoryMethod Expand file tree Collapse file tree 9 files changed +180
-2
lines changed Original file line number Diff line number Diff line change @@ -17,7 +17,29 @@ private static void Main(string[] args)
17
17
/// </summary>
18
18
private static void RunDemo ( )
19
19
{
20
-
20
+ var nokiaPrice = 10000 ;
21
+ var nokiaModel = "3310" ;
22
+ var nokiaProcessor = "RAP3G" ;
23
+ var nokiaRandomAccessMemory = 1 ;
24
+
25
+ var samsungPrice = 100000 ;
26
+ var samsungModel = "S23" ;
27
+ var samsungProcessor = "Snap Dragon" ;
28
+ var samsungRandomAccessMemory = 8 ;
29
+
30
+ var nokia = new NokiaDeveloper ( ) . CreatePhone ( ) ;
31
+ nokia . Price = nokiaPrice ;
32
+ nokia . Model = nokiaModel ;
33
+ nokia . Processor = nokiaProcessor ;
34
+ nokia . RandomAccessMemory = nokiaRandomAccessMemory ;
35
+
36
+ var samsung = new SamsungDeveloper ( ) . CreatePhone ( ) ;
37
+ samsung . Price = samsungPrice ;
38
+ samsung . Model = samsungModel ;
39
+ samsung . Processor = samsungProcessor ;
40
+ samsung . RandomAccessMemory = samsungRandomAccessMemory ;
41
+
42
+ Console . WriteLine ( $ "Созданные телефоны:{ Environment . NewLine } { nokia } { Environment . NewLine } { samsung } ") ;
21
43
}
22
44
#endregion
23
45
}
Original file line number Diff line number Diff line change 41
41
<Reference Include =" System.Xml" />
42
42
</ItemGroup >
43
43
<ItemGroup >
44
+ <Compile Include =" NokiaDeveloper.cs" />
45
+ <Compile Include =" Samsung.cs" />
46
+ <Compile Include =" IPhoneDeveloper.cs" />
47
+ <Compile Include =" Nokia.cs" />
48
+ <Compile Include =" Phone.cs" />
44
49
<Compile Include =" Properties\AssemblyInfo.cs" />
50
+ <Compile Include =" SamsungDeveloper.cs" />
45
51
</ItemGroup >
46
52
<Import Project =" $(MSBuildToolsPath)\Microsoft.CSharp.targets" />
47
53
</Project >
Original file line number Diff line number Diff line change
1
+
2
+ namespace Patterns
3
+ {
4
+ /// <summary>
5
+ /// Содержит методы для рабработчика телефонов.
6
+ /// </summary>
7
+ public interface IPhoneDeveloper
8
+ {
9
+ /// <summary>
10
+ /// Создание телефона.
11
+ /// </summary>
12
+ /// <returns>Телефон.</returns>
13
+ Phone CreatePhone ( ) ;
14
+ }
15
+ }
Original file line number Diff line number Diff line change
1
+
2
+ namespace Patterns
3
+ {
4
+ /// <summary>
5
+ /// Нокиа.
6
+ /// </summary>
7
+ public class Nokia : Phone
8
+ {
9
+ #region Свойства.
10
+ /// <summary>
11
+ /// Работает ли батарея.
12
+ /// </summary>
13
+ public bool IsBatteryWork { get ; set ; }
14
+ #endregion
15
+
16
+ #region Методы.
17
+ /// <summary>
18
+ /// Строковое представления объекта Нокиа.
19
+ /// </summary>
20
+ /// <returns>Данные Нокиа в виде строки.</returns>
21
+ public override string ToString ( ) => $ "Нокиа: { base . ToString ( ) } Работает ли батарея = { IsBatteryWork } ";
22
+ #endregion
23
+ }
24
+ }
Original file line number Diff line number Diff line change
1
+
2
+ namespace Patterns
3
+ {
4
+ /// <summary>
5
+ /// Разработчик телефонов фирмы Нокиа.
6
+ /// </summary>
7
+ public class NokiaDeveloper : IPhoneDeveloper
8
+ {
9
+ #region Методы.
10
+ /// <summary>
11
+ /// Создание телефона.
12
+ /// </summary>
13
+ /// <returns>Телефон.</returns>
14
+ public Phone CreatePhone ( ) => new Nokia ( ) ;
15
+ #endregion
16
+ }
17
+ }
Original file line number Diff line number Diff line change
1
+
2
+ namespace Patterns
3
+ {
4
+ /// <summary>
5
+ /// Телефон.
6
+ /// </summary>
7
+ public abstract class Phone
8
+ {
9
+ #region Свойства.
10
+ /// <summary>
11
+ /// Цена.
12
+ /// </summary>
13
+ public decimal Price { get ; set ; }
14
+
15
+ /// <summary>
16
+ /// Модель.
17
+ /// </summary>
18
+ public string Model { get ; set ; } = string . Empty ;
19
+
20
+ /// <summary>
21
+ /// Процессор.
22
+ /// </summary>
23
+ public string Processor { get ; set ; } = string . Empty ;
24
+
25
+ /// <summary>
26
+ /// Оперативная память.
27
+ /// </summary>
28
+ public int RandomAccessMemory { get ; set ; }
29
+ #endregion
30
+
31
+ #region Методы.
32
+ /// <summary>
33
+ /// Строковое представления объекта телефона.
34
+ /// </summary>
35
+ /// <returns>Данные телефона в виде строки.</returns>
36
+ public override string ToString ( ) => $ "Цена = { Price } Модель = { Model } Процессор = { Processor } Оперативная память = { RandomAccessMemory } ";
37
+ #endregion
38
+ }
39
+ }
Original file line number Diff line number Diff line change
1
+
2
+ namespace Patterns
3
+ {
4
+ /// <summary>
5
+ /// Самсунг.
6
+ /// </summary>
7
+ public class Samsung : Phone
8
+ {
9
+ #region Свойства.
10
+ /// <summary>
11
+ /// Влючена ли сейчас фронтальная камера.
12
+ /// </summary>
13
+ public bool IsFrontCamera { get ; set ; }
14
+ #endregion
15
+
16
+ #region Методы.
17
+ /// <summary>
18
+ /// Строковое представления объекта Самсунга.
19
+ /// </summary>
20
+ /// <returns>Данные Самсунга в виде строки.</returns>
21
+ public override string ToString ( ) => $ "Самсунг: { base . ToString ( ) } Включена ли фронтальная камера = { IsFrontCamera } ";
22
+ #endregion
23
+ }
24
+ }
Original file line number Diff line number Diff line change
1
+ namespace Patterns
2
+ {
3
+ /// <summary>
4
+ /// Разработчик телефонов фирмы Самсунг.
5
+ /// </summary>
6
+ public class SamsungDeveloper
7
+ {
8
+ #region Методы.
9
+ /// <summary>
10
+ /// Создание телефона.
11
+ /// </summary>
12
+ /// <returns>Телефон.</returns>
13
+ public Phone CreatePhone ( ) => new Samsung ( ) ;
14
+ #endregion
15
+ }
16
+ }
Original file line number Diff line number Diff line change @@ -6,9 +6,24 @@ namespace Patterns
6
6
[ TestClass ]
7
7
public class FactoryMethodTests
8
8
{
9
+ #region Методы.
10
+ /// <summary>
11
+ /// Проверка корректности создания телефона фирмы Самсунг с помощью разработчика.
12
+ /// </summary>
9
13
[ TestMethod ]
10
- public void TestMethod1 ( )
14
+ public void CreateSamsung_BySamsungDeveloper_ShouldReturnSamsung ( )
11
15
{
16
+ Assert . IsTrue ( new SamsungDeveloper ( ) . CreatePhone ( ) is Samsung ) ;
12
17
}
18
+
19
+ /// <summary>
20
+ /// Проверка корректности создания телефона фирмы Нокиа с помощью разработчика.
21
+ /// </summary>
22
+ [ TestMethod ]
23
+ public void CreateNokia_ByNokiaDeveloper_ShouldReturnNokia ( )
24
+ {
25
+ Assert . IsTrue ( new NokiaDeveloper ( ) . CreatePhone ( ) is Nokia ) ;
26
+ }
27
+ #endregion
13
28
}
14
29
}
You can’t perform that action at this time.
0 commit comments