exceed_er: (Default)
[personal profile] exceed_er

  • Seprataion of concerns design principle

  • separation of interface and implementation - это, впрочем, понятно, пользуемся, но есть ли четкие правила что и как интерфизировать?

  • component-oriented programming - красивые слова, где за этим каждый понимает что-то своё, или всё же есть общий принцип?

  • inversion of control - "драстуй, Весна" :)

В разных комбинациях об этом кричат на каждом углу. Даже я сам уже умею об этом что-то умное ввернуть. Но от этого всё время веет нео-маркетингом якобы бесплатных открытых систем. Хочу технарский малословный дельный набор определений и примеров. Желательно без АОР и как можно более на пальцах. Попробую провикипедить.

Кое-что про компоненты (component-oriented programming):
ООП и связынные с ним дисциплины ОО дизайна и ОО анализа фокусируются на моделировании восприятия реального мира через речь и пытаются создать "глаголы"-методы и "существительные"-классы, чтобы использовать их можно было интуитивно. Идеально подходит для конечных пользователей.
С другой стороны, софтверная индустрия, особенно в больших продуктах, предпочитает "склеить" готовые компоненты, как это обычно делается в электронике или механике. Определение полезных компонент может быть при этом анти-интуитивным. В общем случае такое программирование не любит антропоморфизм и часто компоненты не годятся для использования конечным пользователем.
В общем, ничего нового, немного яснее, что имеется ввиду. MailService не работает как
new Mail(...).send()
(интуитивно), а
locate("MailService").do("sendMail", new Mail());
, что позволяет подставить любую компоненту если что.

Inversion of control
Ну это штука старая, как только видноуз стала вызывать нас по кнопкам мышки, а не мы опрашивали регистры в бесконечном цикле. Нового в нем - Dependency Injection, которая условно разбивается на:

  • constructor injection

  • setter injection

  • interface injection

Эта разбивка условная, по тому КАК впрыскивается контейнер в компоненту (передается в конструкторе, вызывается через сеттер или через специальную функцию, требующую определенный интерфейс).
На самом деле все эти вещи обьединяются и различаются совсем не этим, а наличием локатора и менеджера сервисов и внешней конфигурации этого менеджера через XML или программно. Вот это важный момент. "Весенний", но непредвзятый обзор тут.

My definition

Date: 2005-01-12 07:58 pm (UTC)
From: [identity profile] ex-bulatych796.livejournal.com
Inversion of control is a design principle that prescribes a class architecture under which class instances are controlled by containers invoking the instances' methods at the containers' discretion.
From: [identity profile] exceeder.livejournal.com
Потом переформулирую в простую и доступную форму в несколько строчек.

Date: 2005-01-12 10:23 pm (UTC)
From: [identity profile] 109.livejournal.com
чуть подправлю

LocatorService.Locate("MailService"), далее по тексту.

логично. Важное замечание.

Date: 2005-01-12 11:04 pm (UTC)
From: [identity profile] exceeder.livejournal.com
Надо бы статью написать, я тут за пару часов вроде разобрался с этой кашей.

Date: 2005-01-13 03:06 am (UTC)
From: [identity profile] elenkah.livejournal.com
Эксидушка! у меня есть одна очень скромная молодая особа, которая хочет с тобой познакомиться, но сильно баицца и штишняецца! [livejournal.com profile] honda_2001

:-)

Date: 2005-01-13 03:19 am (UTC)
From: [identity profile] honda-2001.livejournal.com
:))))) Да, стисняюсь....
From: (Anonymous)
Все кто купил вроде хвалят.Кто купил рассказывайте как он??
Цена канечно большая но штука говорят крутая!

Profile

exceed_er: (Default)
exceeder

November 2016

S M T W T F S
  12345
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 18th, 2025 02:20 pm
Powered by Dreamwidth Studios