Skip to content

Commit 979d4e6

Browse files
The implementation of the design pattern "Facade".
1 parent ab84f72 commit 979d4e6

File tree

7 files changed

+81
-0
lines changed

7 files changed

+81
-0
lines changed

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,15 @@
127127
- динамическое и понятное клиентам добавление обязаностей объектам;
128128
- реализация обязанностей, которые могут быть сняты с объекта;
129129
- рассширение класса путем порождения подклассов невозможно по каким-либо причинам.
130+
131+
Шаблон: Фасад (Facade)
132+
===============================================================================================
133+
**Цель:**
134+
Предоставить унифицированный интерфейс вместо нескольких интерфейсов системы.
135+
136+
**Для чего используется:**
137+
Используется для определения интерфейса высокого уровня, который упрощает использование подсистемы.
138+
139+
**Пример использования:**
140+
- изолирование клиентов от компонентов подсистемы, упрощая работу с ней;
141+
- необходимость ослабления связанности подсистемы с клиентами.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package ua.kay.patterns.facade;
2+
3+
public class BugTracker {
4+
private boolean activeSprint;
5+
6+
public boolean isActiveSprint() {
7+
return activeSprint;
8+
}
9+
10+
public void startSprint() {
11+
System.out.println("Sprint is active!");
12+
this.activeSprint = true;
13+
}
14+
15+
public void finishSprint() {
16+
System.out.println("Sprint is NOT active!");
17+
this.activeSprint = false;
18+
}
19+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package ua.kay.patterns.facade;
2+
3+
public class Developer {
4+
public void doJobBeforeDeadline(BugTracker bugTracker) {
5+
if (bugTracker.isActiveSprint()) {
6+
System.out.println("Developer is solving problems...");
7+
} else {
8+
System.out.println("Developer is reading books...");
9+
}
10+
}
11+
}

src/ua/kay/patterns/facade/Job.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ua.kay.patterns.facade;
2+
3+
public class Job {
4+
public void doJob() {
5+
System.out.println("Job in progress...");
6+
}
7+
}

src/ua/kay/patterns/facade/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Шаблон: Фасад (Facade)
2+
===============================================================================================
3+
**Цель:**
4+
Предоставить унифицированный интерфейс вместо нескольких интерфейсов системы.
5+
6+
**Для чего используется:**
7+
Используется для определения интерфейса высокого уровня, который упрощает использование подсистемы.
8+
9+
**Пример использования:**
10+
- изолирование клиентов от компонентов подсистемы, упрощая работу с ней;
11+
- необходимость ослабления связанности подсистемы с клиентами.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package ua.kay.patterns.facade;
2+
3+
public class SprintRunner {
4+
public static void main(String[] args) {
5+
WorkFlow workFlow = new WorkFlow();
6+
workFlow.solveProblems();
7+
}
8+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package ua.kay.patterns.facade;
2+
3+
public class WorkFlow {
4+
Job job = new Job();
5+
BugTracker bugTracker = new BugTracker();
6+
Developer developer = new Developer();
7+
8+
public void solveProblems() {
9+
job.doJob();
10+
bugTracker.startSprint();
11+
developer.doJobBeforeDeadline(bugTracker);
12+
}
13+
}

0 commit comments

Comments
 (0)