-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
154 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,53 @@ | ||
#FILE SHOULD HAVE STRUCTURE PATTERN | ||
# 1. type builder interface | ||
|
||
class Builder | ||
def build_part1 | ||
end | ||
|
||
def build_part2 | ||
end | ||
|
||
def build_part3 | ||
end | ||
|
||
end | ||
|
||
# 2. type builder implementations | ||
|
||
class ComputerBuilder < Builder | ||
def build_part1 | ||
puts "Building part1: motherboard" | ||
end | ||
|
||
def build_part2 | ||
puts "Building part2: CPU" | ||
end | ||
|
||
def build_part3 | ||
puts "Building part3: display" | ||
end | ||
end | ||
|
||
class TableBuilder < Builder | ||
def build_part1 | ||
puts "Building part1: legs" | ||
end | ||
|
||
def build_part2 | ||
puts "Building part2: top" | ||
end | ||
|
||
def build_part3 | ||
puts "Building part3: mounting" | ||
end | ||
end | ||
|
||
# 3. director | ||
|
||
class Director | ||
def construct(builder) | ||
builder.build_part1 | ||
builder.build_part2 | ||
builder.build_part3 | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,85 @@ | ||
#FILE SHOULD SAMPLE PATTERN | ||
# | ||
# Базовый объект строительства | ||
# | ||
class Pizza | ||
attr_accessor :pastry, :sauce, :garniture | ||
end | ||
|
||
# | ||
# Builder - класс строитель | ||
# | ||
class BuilderPizza | ||
attr_reader :pizza | ||
|
||
def create_new_pizza | ||
@pizza = Pizza.new | ||
end | ||
|
||
def get_pizza | ||
"Your order. pastry: #{@pizza.pastry}, sauce: #{@pizza.sauce}, garniture: #{@pizza.garniture}" | ||
end | ||
end | ||
|
||
# | ||
# BuilderConcret - Конкретный строитель 1 | ||
# | ||
class BuilderPizzaHawaii < BuilderPizza | ||
def build_pastry | ||
@pizza.pastry = 'normal' | ||
end | ||
|
||
def build_sauce | ||
@pizza.sauce = 'soft' | ||
end | ||
|
||
def build_garniture | ||
@pizza.garniture = 'jambon+ananas' | ||
end | ||
end | ||
|
||
# | ||
# BuilderConcret - Конкретный строитель 2 | ||
# | ||
class BuilderPizzaSpicy < BuilderPizza | ||
def build_pastry | ||
@pizza.pastry = 'puff' | ||
end | ||
|
||
def build_sauce | ||
@pizza.sauce = 'hot' | ||
end | ||
|
||
def build_garniture | ||
@pizza.garniture = 'papperoni+salami' | ||
end | ||
end | ||
|
||
# | ||
# Director - Управляющий класс, запускающий строительство | ||
# | ||
class Waiter | ||
def set_builder_pizza(bp) | ||
@builder_pizza = bp | ||
end | ||
|
||
def get_pizza | ||
@builder_pizza.get_pizza | ||
end | ||
|
||
def construct_pizza | ||
@builder_pizza.create_new_pizza | ||
@builder_pizza.build_pastry | ||
@builder_pizza.build_sauce | ||
@builder_pizza.build_garniture | ||
end | ||
end | ||
|
||
waiter = Waiter.new | ||
|
||
builder_pizza_hawaii = BuilderPizzaHawaii.new | ||
builder_pizza_spicy = BuilderPizzaSpicy.new | ||
|
||
waiter.set_builder_pizza(builder_pizza_hawaii) | ||
waiter.construct_pizza | ||
|
||
puts waiter.get_pizza |