Паттерн проектирования Functional design (Шаблон функционального дизайна) на PHP

Шаблон функционального дизайна (англ. Functional design) — это шаблон проектирования, использующийся для упрощенияпроектирования ПО. Функциональный дизайн гарантирует, что каждый модуль компьютерной программы имеет только однуобязанность и исполняет её с минимумом побочных эффектов на другие части программы. Функционально разработанныемодули имеют предельно низкую связанность.


Преимущества

Системы с функционально-спроектированными частями легче модифицировать, потому что каждая часть делает только то, длячего она предназначена. Так как поддержка программы занимает больше 3/4 жизни успешной системы, эта особенностьявляется решающим преимуществом. Это также делает систему лёгкой для понимания и документирования, что такжеупрощает обучение. Результатом является то, что практическое время жизни функциональной системы больше.

Преимуществом для реализации является то, что если программный модуль имеет единственное предназначение, он будетпроще и тем самым — легче и менее дорогостоящим для проектирования и реализации.

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


Методика

Стандартный способ обеспечения функционального дизайна — это обзор описания модуля. Если описание включает связи,такие как «и» или «или», тогда дизайн имеет более, чем одно предназначение, и соответственно возможно будет иметьпобочные эффекты. Предназначения должны быть разделены в отдельные модули для того, чтобы функциональный дизайн былбы достижим.


Критика и ограничения

Каждая компьютерная система имеет части, которые не могут быть функционально чисты, потому что они существуют дляраспределения тактов процессора или других ресурсов различным модулям. Например, большинство систем имеют раздел«инициализации», который запускает модули. Другие хорошо известные примеры включают в себя таблицу векторовпрерываний и главный цикл.

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


Применение к 3D моделированию и симуляции

Последнее время некоторые софтверные компании вводят Функциональный дизайн как концепцию описания Parametric featurebased modeler для 3D моделирования и симуляции. В этом смысле, они имеют в виду параметрическую модель (parametricmodel) объекта, параметры которого связаны с настоящими параметрами дизайна. Например, ось, изменяющая диаметр взависимости от прочности материала и величины силы, приложенной к ней в симуляции. Считается, что таким образомбудет увеличена производительность в процессе проектирования для механических и даже возможноархитектурных/структурных сборок путем внедрения результата анализа методом конечных элементов непосредственно вповедение индивидуальных объектов.

Теги: Шаблон функционального дизайна, Functional design, Основные паттерны


Похожие статьи

Паттерн проектирования Delegation (Делегирование) на PHP

Паттерн проектирования Interface (Интерфейс) на PHP

Паттерн проектирования Immutable object (Неизменяемый объект) на PHP