Что это значит под клиентом в шаблонах проектирования программного обеспечения?

Что это значит клиент в шаблонах проектирования программного обеспечения? Например, я вижу, что это слово часто упоминается в шаблонах проектирования, например, в это учебное пособие по шаблону PHP Visitor Design. Это даже имеет учебный класс называется клиент (это тоже шаблон дизайна?)

//Client.php
error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);
// Autoload given function name.
function includeAll($className)
{
include_once($className . '.php');
}
//Register
spl_autoload_register('includeAll');

class Client
{
private static $shapeElement;
private static $color;
private static $package;

//client request
public static function request()
{
self::$shapeElement= array();
self::$shapeElement=$_POST['shape'];
self::$color=$_POST['color'];
self::$package= array();

$obStructure = new ObjectStructure();
$colorVisitor= new self::$color();

//Attach concrete elements to array & accept visitor
foreach (self::$shapeElement as $shapeNow)
{
$obStructure->attach(new $shapeNow,$colorVisitor);
}

//Display selected shapes
self::$package=$obStructure->getElements();
foreach (self::$package as $colorShape)
{
echo $colorShape->showShape();
}
}
}
Client::request();

От википедия, клиент в клиент-серверных сетях, что я обычно понимаю,

Клиент — это часть компьютерного оборудования или программного обеспечения, которая обращается к
услуга, предоставляемая сервером. Сервер часто (но не
всегда) на другой компьютерной системе, в этом случае клиент получает доступ
услуга через сеть. Термин относится к программам или
устройства, которые являются частью модели клиент-сервер.

Тогда это определение для клиент в шаблонах проектирования программного обеспечения, а?

Если клиент превращается в класс,

class Client
{
...
}

тогда я могу иметь много клиенты, и где я должен держать этих клиентов в архитектурном образце MVC? Должен ли я создать каталог под названием клиент и держать все клиентские классы в нем?

1

Решение

Клиент — это «код», который будет выполняться на клиентском компьютере. Однако, если мы говорим о веб-приложениях, клиент, вероятно, является браузером. Таким образом, никакой внутренний код (например, PHP) не будет выполняться в клиенте. Есть также случаи, когда клиентский компьютер не является браузером, например, функциональность банкоматов. В этом случае клиентский код будет тем, который будет выполнен в банкомате, когда конечный пользователь совершит конкретную транзакцию (снятие, внесение и т. Д.).

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

Было бы разумно создать другой каталог для класса Client и отдельный подкаталог для всех наследуемых подклассов.

2

Другие решения

Клиент — это общее имя для класса или классов, которые обычно получают выгоду от шаблона. В реальных приложениях это, вероятно, не называется клиентом.

Многие модели обеспечивают защищенные варианты и Клиент — это класс, защищенный от изменений в части дизайна, открытой для расширения. В случае Visitorкод в клиенте не должен требовать каких-либо (или многих) изменений, если вы добавляете новую функциональность посетителя.

Другой способ взглянуть на это состоит в том, что программирование выполняется по двум причинам:

  1. разработка приложений
  2. разработка фреймворков (или кода для облегчения разработки приложений — первая причина)

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

1