dir.by  
  Search  
Programming, development, testing
Паттерны, шаблоны проектирования | принципы ООП | рефакторинг кода
Фабричный метод (Factory Method) это порождающий шаблон проектирования
  Looked at 6035 times    
 Фабричный метод (Factory Method) это порождающий шаблон проектирования 
last updated: 29 March 2021
Фабричный метод (Factory Method) - это паттерн, для создания объекта в подклассе.

Другими словами, данный шаблон делегирует создание объекта подклассу.
Пример
  C#  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
     // Phone classes
     abstract class Phone
     {
          public abstract Graphic Create();
     }

     class SamsungPhone : Phone
     {
          public override Graphic Create() // factory method
          {
               return new SamsungGraphic();
          }
     }

     class ApplePhone : Phone
     {
          public override Graphic Create() // factory method
          {
               return new AppleGraphic();
          }
     }

     // Graphic classes
     abstract class Graphic
     {
     }

     class AppleGraphic : Graphic
     {
     }

     class SamsungGraphic : Graphic
     {
     }

     // Program class
     class Program
     {
          static void Main(string[] args)
          {
               // samsung phone
               Phone phone = new SamsungPhone();
               Graphic graphic = phone.Create(); // factory method

               // apple phone
               phone = new ApplePhone();
               graphic = phone.Create(); // factory method
          }
     }
}
Когда надо применять паттерн ?
1)
Когда заранее неизвестно, объекты каких типов необходимо создавать
2)
Когда система должна быть расширяемой (можно легко вводить новые классы, объекты которых система должна создавать).
Другими словами: когда вы хотите дать возможность пользователям расширять части вашей библиотеки.

Когда система должна быть независимой от процесса создания новых объектов.
3)
Когда создание новых объектов необходимо делегировать из базового класса классам наследникам
Преимущества и недостатки
Преимущества
Недостатки
Упрощает добавление новых продуктов в программу

Реализует принцип открытости/закрытости

Избавляет класс от привязки к конкретным классам
Может привести к созданию больших параллельных иерархий классов, так как для каждого класса продукта надо создать свой подкласс создателя.
 
← Previous topic
Что такое рефакторинг кода ?
 
Next topic →
Абстрактная фабрика (Abstract Factory) это порождающий шаблон проектирования
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
Введение
Что такое подкласс или дочерний класс или наследник класса? Что такое родительский класс ?
Принципы ООП
Что такое Объектно-ориентированное программирование? Принципы: абстрагирование, инкапсуляция, наследование, полиморфизм
Рефакторинг кода
Что такое рефакторинг кода ?
Шаблоны проектирования
Порождающие паттерны
Фабричный метод (Factory Method) это порождающий шаблон проектирования
Абстрактная фабрика (Abstract Factory) это порождающий шаблон проектирования
Одиночка (Singleton) это порождающий шаблон проектирования
Прототип (Prototype) это порождающий шаблон проектирования
Строитель (Builder) это порождающий шаблон проектирования

Паттерны поведения
Стратегия (Strategy) это поведенческий шаблон проектирования
S.O.L.I.D. (5 принципов проектирования программы)
Что такое SOLID ?
Single Responsibility Principle (Принцип единственной обязанности) SOLID проектирование
Open/Closed Principle (Принцип открытости/закрытости) SOLID проектирование

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика