Това е много широк въпрос - вероятно твърде широк, за да се отговори.
Въпреки това две методологии, които могат да осигурят решение с „хлабаво свързване“, са:
Инжектиране на зависимост
Инжектирането на зависимости (особено когато се използва контейнер за инверсия на контрол) осигурява слабо свързване в рамките на приложение или решение - С инжектирането на зависимости вие не кодирате твърдо препратките си към зависими обекти, вместо това кодирате към интерфейси и инжектирате реализации на тези интерфейси.
Ето бърз пример за код на компонент за регистриране на приложение, който имплементира интерфейс на ILogger
public class ConcreteLogger : ILogger
{
public LogMessage(string message)
{
Log.Write(message);
}
}
След това един от вашите класове получава тази конкретна реализация на интерфейса на регистратора.
public class MyClass
{
private ILogger logger;
public myClass(ILogger logger)
{
this.logger = logger;
}
public void DoSomething()
{
// Now if DoSomething needs to call logging it can call what ever ILogger was passed in
this.logger.Log("We did something");
}
}
Ориентация към услугата
Ориентацията на услугата осигурява слабо свързване между различни подсистеми на решение - С ориентацията на услугата всяка част от решението се превръща в собствена самостоятелна услуга, която публикува и интерфейси (често интерфейс, базиран на съобщения).
Това означава, че дадено приложение, когато трябва например да говори с подсистемата за доставка на решение, трябва да знае само за системните интерфейси и своя адрес и не трябва да знае нищо за вътрешното си изпълнение. Това почти може да се разглежда като по-широко приложение на основните OO принципи.
И двете осигуряват два различни типа хлабаво свързване (това е един от проблемите с вашия въпрос, самият термин е свободно дефиниран)
person
David Hall
schedule
02.01.2010