Compare commits
8 Commits
8fadc54ab2
...
ddc6253386
| Author | SHA1 | Date | |
|---|---|---|---|
|
ddc6253386
|
|||
|
2598af8d3a
|
|||
|
3a2484a123
|
|||
|
7c3d0b2cbd
|
|||
|
5fbcd72ea6
|
|||
|
1ab845574a
|
|||
|
50e6ed18df
|
|||
|
2f41073a0f
|
Binary file not shown.
|
Before Width: | Height: | Size: 265 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 155 KiB |
15
src/lab2_factory_method/ex1/Car.java
Normal file
15
src/lab2_factory_method/ex1/Car.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public abstract class Car {
|
||||
private String color = "blank";
|
||||
|
||||
public Car() {}
|
||||
public abstract String getName();
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
public void paintColor(String color) {
|
||||
this.color = color;
|
||||
System.out.println("Painting car in " + color);
|
||||
}
|
||||
}
|
||||
10
src/lab2_factory_method/ex1/CarCreator.java
Normal file
10
src/lab2_factory_method/ex1/CarCreator.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public abstract class CarCreator {
|
||||
public Car orderCar(String color) {
|
||||
Car car = createCar();
|
||||
car.paintColor(color);
|
||||
return car;
|
||||
}
|
||||
public abstract Car createCar();
|
||||
}
|
||||
8
src/lab2_factory_method/ex1/Coupe.java
Normal file
8
src/lab2_factory_method/ex1/Coupe.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class Coupe extends Car {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Coupe";
|
||||
}
|
||||
}
|
||||
9
src/lab2_factory_method/ex1/CoupeCreator.java
Normal file
9
src/lab2_factory_method/ex1/CoupeCreator.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class CoupeCreator extends CarCreator {
|
||||
|
||||
@Override
|
||||
public Car createCar() {
|
||||
return new Coupe();
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex1/Minivan.java
Normal file
8
src/lab2_factory_method/ex1/Minivan.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class Minivan extends Car {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Minivan";
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex1/MinivanCreator.java
Normal file
8
src/lab2_factory_method/ex1/MinivanCreator.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class MinivanCreator extends CarCreator {
|
||||
@Override
|
||||
public Car createCar() {
|
||||
return new Minivan();
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex1/Pickup.java
Normal file
8
src/lab2_factory_method/ex1/Pickup.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class Pickup extends Car {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Pickup";
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex1/PickupCreator.java
Normal file
8
src/lab2_factory_method/ex1/PickupCreator.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class PickupCreator extends CarCreator {
|
||||
@Override
|
||||
public Car createCar() {
|
||||
return new Pickup();
|
||||
}
|
||||
}
|
||||
21
src/lab2_factory_method/ex1/Program.java
Normal file
21
src/lab2_factory_method/ex1/Program.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package lab2_factory_method.ex1;
|
||||
|
||||
public class Program {
|
||||
public static void main(String[] args) {
|
||||
CarCreator coupeCreator = new CoupeCreator();
|
||||
CarCreator minivanCreator = new MinivanCreator();
|
||||
CarCreator pickupCreator = new PickupCreator();
|
||||
Car c1 = coupeCreator.orderCar("red");
|
||||
System.out.println("Car "
|
||||
+ c1.getName()
|
||||
+ " "
|
||||
+ c1.getColor()
|
||||
+ " has been ordered.");
|
||||
Car c2 = minivanCreator.orderCar("red");
|
||||
System.out.println("Car "
|
||||
+ c2.getName()
|
||||
+ " "
|
||||
+ c2.getColor()
|
||||
+ " has been ordered.");
|
||||
}
|
||||
}
|
||||
19
src/lab2_factory_method/ex2/ArchitectOffice.java
Normal file
19
src/lab2_factory_method/ex2/ArchitectOffice.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class ArchitectOffice {
|
||||
public static void main(String[] args) {
|
||||
HouseCreator glassHouseCreator = new GlassHouseCreator();
|
||||
HouseCreator bricksHouseCreator = new BricksHouseCreator();
|
||||
HouseCreator woodHouseCreator = new WoodHouseCreator();
|
||||
|
||||
House house1 = glassHouseCreator.create();
|
||||
house1.buildHouse();
|
||||
house1.calculatePrice();
|
||||
House house2 = bricksHouseCreator.create();
|
||||
house2.buildHouse();
|
||||
house2.calculatePrice();
|
||||
House house3 = woodHouseCreator.create();
|
||||
house3.buildHouse();
|
||||
house3.calculatePrice();
|
||||
}
|
||||
}
|
||||
13
src/lab2_factory_method/ex2/BricksHouse.java
Normal file
13
src/lab2_factory_method/ex2/BricksHouse.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class BricksHouse extends House {
|
||||
@Override
|
||||
public void buildHouse() {
|
||||
System.out.println("Building a bricks house");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculatePrice() {
|
||||
System.out.println("Modest bricks house");
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex2/BricksHouseCreator.java
Normal file
8
src/lab2_factory_method/ex2/BricksHouseCreator.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class BricksHouseCreator extends HouseCreator {
|
||||
@Override
|
||||
public House create() {
|
||||
return new BricksHouse();
|
||||
}
|
||||
}
|
||||
13
src/lab2_factory_method/ex2/GlassHouse.java
Normal file
13
src/lab2_factory_method/ex2/GlassHouse.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class GlassHouse extends House {
|
||||
@Override
|
||||
public void buildHouse() {
|
||||
System.out.println("Building a glass house");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculatePrice() {
|
||||
System.out.println("Expensive glass house");
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex2/GlassHouseCreator.java
Normal file
8
src/lab2_factory_method/ex2/GlassHouseCreator.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class GlassHouseCreator extends HouseCreator {
|
||||
@Override
|
||||
public House create() {
|
||||
return new GlassHouse();
|
||||
}
|
||||
}
|
||||
6
src/lab2_factory_method/ex2/House.java
Normal file
6
src/lab2_factory_method/ex2/House.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public abstract class House {
|
||||
public abstract void buildHouse();
|
||||
public abstract void calculatePrice();
|
||||
}
|
||||
5
src/lab2_factory_method/ex2/HouseCreator.java
Normal file
5
src/lab2_factory_method/ex2/HouseCreator.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public abstract class HouseCreator {
|
||||
public abstract House create();
|
||||
}
|
||||
13
src/lab2_factory_method/ex2/WoodHouse.java
Normal file
13
src/lab2_factory_method/ex2/WoodHouse.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class WoodHouse extends House {
|
||||
@Override
|
||||
public void buildHouse() {
|
||||
System.out.println("Building a wooden house");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculatePrice() {
|
||||
System.out.println("Mid range wooden chalet");
|
||||
}
|
||||
}
|
||||
8
src/lab2_factory_method/ex2/WoodHouseCreator.java
Normal file
8
src/lab2_factory_method/ex2/WoodHouseCreator.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab2_factory_method.ex2;
|
||||
|
||||
public class WoodHouseCreator extends HouseCreator {
|
||||
@Override
|
||||
public House create() {
|
||||
return new WoodHouse();
|
||||
}
|
||||
}
|
||||
5
src/lab3_abstract_factory/ex1/AbstractDoor.java
Normal file
5
src/lab3_abstract_factory/ex1/AbstractDoor.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package lab3_abstract_factory.ex1;
|
||||
|
||||
public abstract class AbstractDoor {
|
||||
public abstract int getPrice();
|
||||
}
|
||||
5
src/lab3_abstract_factory/ex1/AbstractWall.java
Normal file
5
src/lab3_abstract_factory/ex1/AbstractWall.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package lab3_abstract_factory.ex1;
|
||||
|
||||
public abstract class AbstractWall {
|
||||
public abstract int getPrice();
|
||||
}
|
||||
5
src/lab3_abstract_factory/ex1/AbstractWindows.java
Normal file
5
src/lab3_abstract_factory/ex1/AbstractWindows.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package lab3_abstract_factory.ex1;
|
||||
|
||||
public abstract class AbstractWindows {
|
||||
public abstract int getPrice();
|
||||
}
|
||||
26
src/lab3_abstract_factory/ex1/ArchitectOffice.java
Normal file
26
src/lab3_abstract_factory/ex1/ArchitectOffice.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package lab3_abstract_factory.ex1;
|
||||
|
||||
import lab3_abstract_factory.ex1.house_factories.DutchHouseFactory;
|
||||
import lab3_abstract_factory.ex1.house_factories.GermanHouseFactory;
|
||||
import lab3_abstract_factory.ex1.house_factories.SwissWoodChaletFactory;
|
||||
|
||||
public class ArchitectOffice {
|
||||
public static void main(String[] args) {
|
||||
House house1 = new House("Modern German house",
|
||||
new GermanHouseFactory());
|
||||
house1.buildHouse();
|
||||
house1.calculatePrice();
|
||||
House house2 = new House("Typical dutch house",
|
||||
new DutchHouseFactory());
|
||||
house2.buildHouse();
|
||||
house2.calculatePrice();
|
||||
House house3 = new House("Swiss wood chalet",
|
||||
new SwissWoodChaletFactory());
|
||||
house3.buildHouse();
|
||||
house3.calculatePrice();
|
||||
|
||||
System.out.println(house1);
|
||||
System.out.println(house2);
|
||||
System.out.println(house3);
|
||||
}
|
||||
}
|
||||
46
src/lab3_abstract_factory/ex1/House.java
Normal file
46
src/lab3_abstract_factory/ex1/House.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package lab3_abstract_factory.ex1;
|
||||
|
||||
public class House {
|
||||
private String name;
|
||||
private HouseFactory houseFactory;
|
||||
private AbstractWall wall;
|
||||
private AbstractWindows windows;
|
||||
private AbstractDoor door;
|
||||
|
||||
public House(String name, HouseFactory houseFactory) {
|
||||
this.name = name;
|
||||
this.houseFactory = houseFactory;
|
||||
}
|
||||
|
||||
public void buildHouse() {
|
||||
wall = houseFactory.buildWall();
|
||||
windows = houseFactory.buildWindows();
|
||||
door = houseFactory.buildDoor();
|
||||
System.out.println(
|
||||
"Building a house with "
|
||||
+ wall
|
||||
+ ", "
|
||||
+ windows
|
||||
+ " and a "
|
||||
+ door
|
||||
);
|
||||
}
|
||||
|
||||
public void calculatePrice() {
|
||||
int total = 0;
|
||||
total += wall.getPrice();
|
||||
total += windows.getPrice();
|
||||
total += door.getPrice();
|
||||
|
||||
System.out.println("Total price: " + total);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "House '" + name + "' (\n"
|
||||
+ " Walls: " + wall + "\n"
|
||||
+ " Windows: " + windows + "\n"
|
||||
+ " Door: " + door + "\n"
|
||||
+ ")";
|
||||
}
|
||||
}
|
||||
7
src/lab3_abstract_factory/ex1/HouseFactory.java
Normal file
7
src/lab3_abstract_factory/ex1/HouseFactory.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package lab3_abstract_factory.ex1;
|
||||
|
||||
public abstract class HouseFactory {
|
||||
public abstract AbstractWall buildWall();
|
||||
public abstract AbstractWindows buildWindows();
|
||||
public abstract AbstractDoor buildDoor();
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/doors/LargeDoor.java
Normal file
15
src/lab3_abstract_factory/ex1/doors/LargeDoor.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.doors;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractDoor;
|
||||
|
||||
public class LargeDoor extends AbstractDoor {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 50;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "large door";
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/doors/ThinDoor.java
Normal file
15
src/lab3_abstract_factory/ex1/doors/ThinDoor.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.doors;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractDoor;
|
||||
|
||||
public class ThinDoor extends AbstractDoor {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 25;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "thin door";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package lab3_abstract_factory.ex1.house_factories;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractDoor;
|
||||
import lab3_abstract_factory.ex1.AbstractWall;
|
||||
import lab3_abstract_factory.ex1.AbstractWindows;
|
||||
import lab3_abstract_factory.ex1.HouseFactory;
|
||||
import lab3_abstract_factory.ex1.doors.LargeDoor;
|
||||
import lab3_abstract_factory.ex1.walls.BricksWall;
|
||||
import lab3_abstract_factory.ex1.windows.FramedWindows;
|
||||
|
||||
public class DutchHouseFactory extends HouseFactory {
|
||||
@Override
|
||||
public AbstractWall buildWall() {
|
||||
return new BricksWall();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractWindows buildWindows() {
|
||||
return new FramedWindows();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractDoor buildDoor() {
|
||||
return new LargeDoor();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package lab3_abstract_factory.ex1.house_factories;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractDoor;
|
||||
import lab3_abstract_factory.ex1.AbstractWall;
|
||||
import lab3_abstract_factory.ex1.AbstractWindows;
|
||||
import lab3_abstract_factory.ex1.HouseFactory;
|
||||
import lab3_abstract_factory.ex1.doors.LargeDoor;
|
||||
import lab3_abstract_factory.ex1.walls.GlassWall;
|
||||
import lab3_abstract_factory.ex1.windows.FullHeightWindows;
|
||||
|
||||
public class GermanHouseFactory extends HouseFactory {
|
||||
@Override
|
||||
public AbstractWall buildWall() {
|
||||
return new GlassWall();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractWindows buildWindows() {
|
||||
return new FullHeightWindows();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractDoor buildDoor() {
|
||||
return new LargeDoor();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package lab3_abstract_factory.ex1.house_factories;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractDoor;
|
||||
import lab3_abstract_factory.ex1.AbstractWall;
|
||||
import lab3_abstract_factory.ex1.AbstractWindows;
|
||||
import lab3_abstract_factory.ex1.HouseFactory;
|
||||
import lab3_abstract_factory.ex1.doors.ThinDoor;
|
||||
import lab3_abstract_factory.ex1.walls.WoodWall;
|
||||
import lab3_abstract_factory.ex1.windows.FramedWindows;
|
||||
|
||||
public class SwissWoodChaletFactory extends HouseFactory {
|
||||
@Override
|
||||
public AbstractWall buildWall() {
|
||||
return new WoodWall();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractWindows buildWindows() {
|
||||
return new FramedWindows();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractDoor buildDoor() {
|
||||
return new ThinDoor();
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/walls/BricksWall.java
Normal file
15
src/lab3_abstract_factory/ex1/walls/BricksWall.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.walls;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractWall;
|
||||
|
||||
public class BricksWall extends AbstractWall {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "brick walls";
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/walls/GlassWall.java
Normal file
15
src/lab3_abstract_factory/ex1/walls/GlassWall.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.walls;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractWall;
|
||||
|
||||
public class GlassWall extends AbstractWall {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "glass walls";
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/walls/WoodWall.java
Normal file
15
src/lab3_abstract_factory/ex1/walls/WoodWall.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.walls;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractWall;
|
||||
|
||||
public class WoodWall extends AbstractWall {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "wood walls";
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/windows/FramedWindows.java
Normal file
15
src/lab3_abstract_factory/ex1/windows/FramedWindows.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.windows;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractWindows;
|
||||
|
||||
public class FramedWindows extends AbstractWindows {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "framed windows";
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex1/windows/FullHeightWindows.java
Normal file
15
src/lab3_abstract_factory/ex1/windows/FullHeightWindows.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex1.windows;
|
||||
|
||||
import lab3_abstract_factory.ex1.AbstractWindows;
|
||||
|
||||
public class FullHeightWindows extends AbstractWindows {
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 200;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "full-height windows";
|
||||
}
|
||||
}
|
||||
18
src/lab3_abstract_factory/ex2/Car.java
Normal file
18
src/lab3_abstract_factory/ex2/Car.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package lab3_abstract_factory.ex2;
|
||||
|
||||
public abstract class Car {
|
||||
protected String name;
|
||||
private String color = "blank";
|
||||
|
||||
public void paintColor(String color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
15
src/lab3_abstract_factory/ex2/CarCreator.java
Normal file
15
src/lab3_abstract_factory/ex2/CarCreator.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab3_abstract_factory.ex2;
|
||||
|
||||
public class CarCreator {
|
||||
private CarFactory carFactory;
|
||||
|
||||
public CarCreator(CarFactory carFactory) {
|
||||
this.carFactory = carFactory;
|
||||
}
|
||||
|
||||
public Car orderCar(String color) {
|
||||
Car car = carFactory.createCar();
|
||||
car.paintColor(color);
|
||||
return car;
|
||||
}
|
||||
}
|
||||
5
src/lab3_abstract_factory/ex2/CarFactory.java
Normal file
5
src/lab3_abstract_factory/ex2/CarFactory.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package lab3_abstract_factory.ex2;
|
||||
|
||||
public abstract class CarFactory {
|
||||
public abstract Car createCar();
|
||||
}
|
||||
31
src/lab3_abstract_factory/ex2/Program.java
Normal file
31
src/lab3_abstract_factory/ex2/Program.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package lab3_abstract_factory.ex2;
|
||||
|
||||
import lab3_abstract_factory.ex2.car_factories.CoupeFactory;
|
||||
import lab3_abstract_factory.ex2.car_factories.MinivanFactory;
|
||||
import lab3_abstract_factory.ex2.car_factories.PickupFactory;
|
||||
|
||||
public class Program {
|
||||
public static void main(String[] args) {
|
||||
CarCreator coupeCreator = new CarCreator(new CoupeFactory());
|
||||
CarCreator minivanCreator = new CarCreator(new MinivanFactory());
|
||||
CarCreator pickupCreator = new CarCreator(new PickupFactory());
|
||||
|
||||
Car c1 = coupeCreator.orderCar("red");
|
||||
System.out.println("Car "
|
||||
+ c1.getName() + " "
|
||||
+ c1.getColor()
|
||||
+ " has been ordered.");
|
||||
|
||||
Car c2 = minivanCreator.orderCar("blue");
|
||||
System.out.println("Car "
|
||||
+ c2.getName() + " "
|
||||
+ c2.getColor()
|
||||
+ " has been ordered.");
|
||||
|
||||
Car c3 = pickupCreator.orderCar("green");
|
||||
System.out.println("Car "
|
||||
+ c3.getName() + " "
|
||||
+ c3.getColor()
|
||||
+ " has been ordered.");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package lab3_abstract_factory.ex2.car_factories;
|
||||
|
||||
import lab3_abstract_factory.ex2.Car;
|
||||
import lab3_abstract_factory.ex2.CarFactory;
|
||||
import lab3_abstract_factory.ex2.cars.Coupe;
|
||||
|
||||
public class CoupeFactory extends CarFactory {
|
||||
@Override
|
||||
public Car createCar() {
|
||||
return new Coupe();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package lab3_abstract_factory.ex2.car_factories;
|
||||
|
||||
import lab3_abstract_factory.ex2.Car;
|
||||
import lab3_abstract_factory.ex2.CarFactory;
|
||||
import lab3_abstract_factory.ex2.cars.Minivan;
|
||||
|
||||
public class MinivanFactory extends CarFactory {
|
||||
@Override
|
||||
public Car createCar() {
|
||||
return new Minivan();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package lab3_abstract_factory.ex2.car_factories;
|
||||
|
||||
import lab3_abstract_factory.ex2.Car;
|
||||
import lab3_abstract_factory.ex2.CarFactory;
|
||||
import lab3_abstract_factory.ex2.cars.Pickup;
|
||||
|
||||
public class PickupFactory extends CarFactory {
|
||||
@Override
|
||||
public Car createCar() {
|
||||
return new Pickup();
|
||||
}
|
||||
}
|
||||
9
src/lab3_abstract_factory/ex2/cars/Coupe.java
Normal file
9
src/lab3_abstract_factory/ex2/cars/Coupe.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package lab3_abstract_factory.ex2.cars;
|
||||
|
||||
import lab3_abstract_factory.ex2.Car;
|
||||
|
||||
public class Coupe extends Car {
|
||||
public Coupe() {
|
||||
this.name = "Coupe";
|
||||
}
|
||||
}
|
||||
9
src/lab3_abstract_factory/ex2/cars/Minivan.java
Normal file
9
src/lab3_abstract_factory/ex2/cars/Minivan.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package lab3_abstract_factory.ex2.cars;
|
||||
|
||||
import lab3_abstract_factory.ex2.Car;
|
||||
|
||||
public class Minivan extends Car {
|
||||
public Minivan() {
|
||||
this.name = "Minivan";
|
||||
}
|
||||
}
|
||||
9
src/lab3_abstract_factory/ex2/cars/Pickup.java
Normal file
9
src/lab3_abstract_factory/ex2/cars/Pickup.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package lab3_abstract_factory.ex2.cars;
|
||||
|
||||
import lab3_abstract_factory.ex2.Car;
|
||||
|
||||
public class Pickup extends Car {
|
||||
public Pickup() {
|
||||
this.name = "Pickup";
|
||||
}
|
||||
}
|
||||
16
src/lab4_command/ex1/Car.java
Normal file
16
src/lab4_command/ex1/Car.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package lab4_command.ex1;
|
||||
|
||||
public class Car {
|
||||
public void forward() {
|
||||
System.out.println("Car goes forward");
|
||||
}
|
||||
public void backward() {
|
||||
System.out.println("Car goes backward");
|
||||
}
|
||||
public void left() {
|
||||
System.out.println("Car goes left");
|
||||
}
|
||||
public void right() {
|
||||
System.out.println("Car goes right");
|
||||
}
|
||||
}
|
||||
10
src/lab4_command/ex1/CarCommand.java
Normal file
10
src/lab4_command/ex1/CarCommand.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package lab4_command.ex1;
|
||||
|
||||
public abstract class CarCommand {
|
||||
protected Car car;
|
||||
public CarCommand(Car car) {
|
||||
this.car = car;
|
||||
}
|
||||
public abstract void execute();
|
||||
public abstract void undo();
|
||||
}
|
||||
38
src/lab4_command/ex1/Game.java
Normal file
38
src/lab4_command/ex1/Game.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package lab4_command.ex1;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Stack;
|
||||
|
||||
public class Game {
|
||||
private final Map<Integer, CarCommand> actions = new HashMap<>();
|
||||
private final Stack<CarCommand> history = new Stack<>();
|
||||
public Car car;
|
||||
|
||||
public Game() {
|
||||
car = new Car();
|
||||
}
|
||||
|
||||
public void bindKey(int key, CarCommand command) {
|
||||
actions.put(key, command);
|
||||
}
|
||||
|
||||
public void unbindKey(int key) {
|
||||
actions.remove(key);
|
||||
}
|
||||
|
||||
public void pushKey(int key) {
|
||||
if (actions.containsKey(key)) {
|
||||
CarCommand action = actions.get(key);
|
||||
action.execute();
|
||||
history.push(action);
|
||||
}
|
||||
}
|
||||
|
||||
public void undo() {
|
||||
if (history.empty()) {
|
||||
return;
|
||||
}
|
||||
history.pop().undo();
|
||||
}
|
||||
}
|
||||
25
src/lab4_command/ex1/MobilePhone.java
Normal file
25
src/lab4_command/ex1/MobilePhone.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package lab4_command.ex1;
|
||||
|
||||
import lab4_command.ex1.commands.BackwardCommand;
|
||||
import lab4_command.ex1.commands.ForwardCommand;
|
||||
import lab4_command.ex1.commands.LeftCommand;
|
||||
import lab4_command.ex1.commands.RightCommand;
|
||||
|
||||
public class MobilePhone {
|
||||
public static void main(String[] args) {
|
||||
Game game = new Game();
|
||||
|
||||
game.bindKey(0, new ForwardCommand(game.car));
|
||||
game.bindKey(1, new BackwardCommand(game.car));
|
||||
game.bindKey(2, new LeftCommand(game.car));
|
||||
game.bindKey(3, new RightCommand(game.car));
|
||||
|
||||
game.pushKey(2);
|
||||
game.pushKey(2);
|
||||
game.pushKey(3);
|
||||
game.pushKey(2);
|
||||
game.pushKey(0);
|
||||
game.pushKey(1);
|
||||
game.undo();
|
||||
}
|
||||
}
|
||||
20
src/lab4_command/ex1/commands/BackwardCommand.java
Normal file
20
src/lab4_command/ex1/commands/BackwardCommand.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package lab4_command.ex1.commands;
|
||||
|
||||
import lab4_command.ex1.Car;
|
||||
import lab4_command.ex1.CarCommand;
|
||||
|
||||
public class BackwardCommand extends CarCommand {
|
||||
public BackwardCommand(Car car) {
|
||||
super(car);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
car.backward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void undo() {
|
||||
car.forward();
|
||||
}
|
||||
}
|
||||
20
src/lab4_command/ex1/commands/ForwardCommand.java
Normal file
20
src/lab4_command/ex1/commands/ForwardCommand.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package lab4_command.ex1.commands;
|
||||
|
||||
import lab4_command.ex1.Car;
|
||||
import lab4_command.ex1.CarCommand;
|
||||
|
||||
public class ForwardCommand extends CarCommand {
|
||||
public ForwardCommand(Car car) {
|
||||
super(car);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
car.forward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void undo() {
|
||||
car.backward();
|
||||
}
|
||||
}
|
||||
20
src/lab4_command/ex1/commands/LeftCommand.java
Normal file
20
src/lab4_command/ex1/commands/LeftCommand.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package lab4_command.ex1.commands;
|
||||
|
||||
import lab4_command.ex1.Car;
|
||||
import lab4_command.ex1.CarCommand;
|
||||
|
||||
public class LeftCommand extends CarCommand {
|
||||
public LeftCommand(Car car) {
|
||||
super(car);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
car.left();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void undo() {
|
||||
car.right();
|
||||
}
|
||||
}
|
||||
20
src/lab4_command/ex1/commands/RightCommand.java
Normal file
20
src/lab4_command/ex1/commands/RightCommand.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package lab4_command.ex1.commands;
|
||||
|
||||
import lab4_command.ex1.Car;
|
||||
import lab4_command.ex1.CarCommand;
|
||||
|
||||
public class RightCommand extends CarCommand {
|
||||
public RightCommand(Car car) {
|
||||
super(car);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
car.right();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void undo() {
|
||||
car.left();
|
||||
}
|
||||
}
|
||||
8
src/lab4_command/ex2/FileAction.java
Normal file
8
src/lab4_command/ex2/FileAction.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package lab4_command.ex2;
|
||||
|
||||
public abstract class FileAction implements MenuAction {
|
||||
protected TextFile file;
|
||||
public FileAction(TextFile file) {
|
||||
this.file = file;
|
||||
}
|
||||
}
|
||||
5
src/lab4_command/ex2/MenuAction.java
Normal file
5
src/lab4_command/ex2/MenuAction.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package lab4_command.ex2;
|
||||
|
||||
public interface MenuAction {
|
||||
void execute();
|
||||
}
|
||||
56
src/lab4_command/ex2/TextEditor.java
Normal file
56
src/lab4_command/ex2/TextEditor.java
Normal file
@@ -0,0 +1,56 @@
|
||||
package lab4_command.ex2;
|
||||
|
||||
import lab4_command.ex2.actions.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class TextEditor {
|
||||
private ArrayList<MenuAction> menu = new ArrayList<>();
|
||||
private TextFile file;
|
||||
|
||||
public TextEditor(TextFile file) {
|
||||
this.file = file;
|
||||
|
||||
addMenuAction(new OpenAction(this.file));
|
||||
addMenuAction(new CloseAction(this.file));
|
||||
addMenuAction(new SaveAction(this.file));
|
||||
addMenuAction(new CopyAction(this.file));
|
||||
addMenuAction(new PasteAction(this.file));
|
||||
}
|
||||
|
||||
public void clickMenu(int entry) {
|
||||
MenuAction action = null;
|
||||
try {
|
||||
action = menu.get(entry);
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
System.out.println("No action bound to entry " + entry);
|
||||
}
|
||||
|
||||
if (action != null) {
|
||||
action.execute();
|
||||
}
|
||||
}
|
||||
|
||||
public void addMenuAction(MenuAction action) {
|
||||
menu.add(action);
|
||||
}
|
||||
|
||||
public void removeMenuAction(int i) {
|
||||
menu.remove(i);
|
||||
}
|
||||
|
||||
public void setMenuAction(int i, MenuAction action) {
|
||||
menu.set(i, action);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
TextFile file = new TextFile("test.txt");
|
||||
TextEditor editor = new TextEditor(file);
|
||||
|
||||
editor.clickMenu(0);
|
||||
editor.clickMenu(1);
|
||||
editor.clickMenu(2);
|
||||
editor.clickMenu(3);
|
||||
editor.clickMenu(4);
|
||||
}
|
||||
}
|
||||
29
src/lab4_command/ex2/TextFile.java
Normal file
29
src/lab4_command/ex2/TextFile.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package lab4_command.ex2;
|
||||
|
||||
public class TextFile {
|
||||
private String name;
|
||||
|
||||
public TextFile(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void open() {
|
||||
System.out.println("Opening file " + name);
|
||||
}
|
||||
|
||||
public void close() {
|
||||
System.out.println("Closing file " + name);
|
||||
}
|
||||
|
||||
public void save() {
|
||||
System.out.println("Saving file " + name);
|
||||
}
|
||||
|
||||
public void copy() {
|
||||
System.out.println("Copying file " + name);
|
||||
}
|
||||
|
||||
public void paste() {
|
||||
System.out.println("Pasting file " + name);
|
||||
}
|
||||
}
|
||||
15
src/lab4_command/ex2/actions/CloseAction.java
Normal file
15
src/lab4_command/ex2/actions/CloseAction.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab4_command.ex2.actions;
|
||||
|
||||
import lab4_command.ex2.FileAction;
|
||||
import lab4_command.ex2.TextFile;
|
||||
|
||||
public class CloseAction extends FileAction {
|
||||
public CloseAction(TextFile file) {
|
||||
super(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
15
src/lab4_command/ex2/actions/CopyAction.java
Normal file
15
src/lab4_command/ex2/actions/CopyAction.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab4_command.ex2.actions;
|
||||
|
||||
import lab4_command.ex2.FileAction;
|
||||
import lab4_command.ex2.TextFile;
|
||||
|
||||
public class CopyAction extends FileAction {
|
||||
public CopyAction(TextFile file) {
|
||||
super(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
file.copy();
|
||||
}
|
||||
}
|
||||
15
src/lab4_command/ex2/actions/OpenAction.java
Normal file
15
src/lab4_command/ex2/actions/OpenAction.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab4_command.ex2.actions;
|
||||
|
||||
import lab4_command.ex2.FileAction;
|
||||
import lab4_command.ex2.TextFile;
|
||||
|
||||
public class OpenAction extends FileAction {
|
||||
public OpenAction(TextFile file) {
|
||||
super(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
file.open();
|
||||
}
|
||||
}
|
||||
15
src/lab4_command/ex2/actions/PasteAction.java
Normal file
15
src/lab4_command/ex2/actions/PasteAction.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab4_command.ex2.actions;
|
||||
|
||||
import lab4_command.ex2.FileAction;
|
||||
import lab4_command.ex2.TextFile;
|
||||
|
||||
public class PasteAction extends FileAction {
|
||||
public PasteAction(TextFile file) {
|
||||
super(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
file.paste();
|
||||
}
|
||||
}
|
||||
15
src/lab4_command/ex2/actions/SaveAction.java
Normal file
15
src/lab4_command/ex2/actions/SaveAction.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package lab4_command.ex2.actions;
|
||||
|
||||
import lab4_command.ex2.FileAction;
|
||||
import lab4_command.ex2.TextFile;
|
||||
|
||||
public class SaveAction extends FileAction {
|
||||
public SaveAction(TextFile file) {
|
||||
super(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
file.save();
|
||||
}
|
||||
}
|
||||
6
src/learn/simple_abstract_factory/AbstractFactory.java
Normal file
6
src/learn/simple_abstract_factory/AbstractFactory.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public interface AbstractFactory {
|
||||
public AbstractProductA createProductA();
|
||||
public AbstractProductB createProductB();
|
||||
}
|
||||
4
src/learn/simple_abstract_factory/AbstractProductA.java
Normal file
4
src/learn/simple_abstract_factory/AbstractProductA.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public interface AbstractProductA {
|
||||
}
|
||||
4
src/learn/simple_abstract_factory/AbstractProductB.java
Normal file
4
src/learn/simple_abstract_factory/AbstractProductB.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public interface AbstractProductB {
|
||||
}
|
||||
29
src/learn/simple_abstract_factory/Client.java
Normal file
29
src/learn/simple_abstract_factory/Client.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class Client {
|
||||
private AbstractFactory abstractFactory;
|
||||
|
||||
private AbstractProductA productA;
|
||||
private AbstractProductB productB;
|
||||
|
||||
public Client(AbstractFactory abstractFactory) {
|
||||
this.abstractFactory = abstractFactory;
|
||||
}
|
||||
|
||||
public void setup() {
|
||||
productA = abstractFactory.createProductA();
|
||||
productB = abstractFactory.createProductB();
|
||||
}
|
||||
|
||||
public void setAbstractFactory(AbstractFactory abstractFactory) {
|
||||
this.abstractFactory = abstractFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Client{" +
|
||||
"productA=" + productA +
|
||||
", productB=" + productB +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
13
src/learn/simple_abstract_factory/ConcreteFactory1.java
Normal file
13
src/learn/simple_abstract_factory/ConcreteFactory1.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class ConcreteFactory1 implements AbstractFactory {
|
||||
@Override
|
||||
public AbstractProductA createProductA() {
|
||||
return new ProductA1();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractProductB createProductB() {
|
||||
return new ProductB1();
|
||||
}
|
||||
}
|
||||
13
src/learn/simple_abstract_factory/ConcreteFactory2.java
Normal file
13
src/learn/simple_abstract_factory/ConcreteFactory2.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class ConcreteFactory2 implements AbstractFactory {
|
||||
@Override
|
||||
public AbstractProductA createProductA() {
|
||||
return new ProductA2();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractProductB createProductB() {
|
||||
return new ProductB2();
|
||||
}
|
||||
}
|
||||
16
src/learn/simple_abstract_factory/Main.java
Normal file
16
src/learn/simple_abstract_factory/Main.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Client client1 = new Client(new ConcreteFactory1());
|
||||
Client client2 = new Client(new ConcreteFactory1());
|
||||
|
||||
client1.setup();
|
||||
|
||||
client2.setAbstractFactory(new ConcreteFactory2());
|
||||
client2.setup();
|
||||
|
||||
System.out.println(client1);
|
||||
System.out.println(client2);
|
||||
}
|
||||
}
|
||||
8
src/learn/simple_abstract_factory/ProductA1.java
Normal file
8
src/learn/simple_abstract_factory/ProductA1.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class ProductA1 implements AbstractProductA {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProductA1";
|
||||
}
|
||||
}
|
||||
8
src/learn/simple_abstract_factory/ProductA2.java
Normal file
8
src/learn/simple_abstract_factory/ProductA2.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class ProductA2 implements AbstractProductA {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProductA2";
|
||||
}
|
||||
}
|
||||
8
src/learn/simple_abstract_factory/ProductB1.java
Normal file
8
src/learn/simple_abstract_factory/ProductB1.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class ProductB1 implements AbstractProductB {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProductB1";
|
||||
}
|
||||
}
|
||||
8
src/learn/simple_abstract_factory/ProductB2.java
Normal file
8
src/learn/simple_abstract_factory/ProductB2.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package learn.simple_abstract_factory;
|
||||
|
||||
public class ProductB2 implements AbstractProductB {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProductB2";
|
||||
}
|
||||
}
|
||||
5
src/learn/simple_command/Command.java
Normal file
5
src/learn/simple_command/Command.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package learn.simple_command;
|
||||
|
||||
public interface Command {
|
||||
void execute();
|
||||
}
|
||||
14
src/learn/simple_command/ConcreteCommand.java
Normal file
14
src/learn/simple_command/ConcreteCommand.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package learn.simple_command;
|
||||
|
||||
public class ConcreteCommand implements Command {
|
||||
private Receiver receiver;
|
||||
|
||||
public ConcreteCommand(Receiver receiver) {
|
||||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
receiver.action();
|
||||
}
|
||||
}
|
||||
13
src/learn/simple_command/Invoker.java
Normal file
13
src/learn/simple_command/Invoker.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package learn.simple_command;
|
||||
|
||||
public class Invoker {
|
||||
private Command slot;
|
||||
|
||||
public void setSlot(Command slot) {
|
||||
this.slot = slot;
|
||||
}
|
||||
|
||||
public void buttonWasPushed() {
|
||||
slot.execute();
|
||||
}
|
||||
}
|
||||
12
src/learn/simple_command/Main.java
Normal file
12
src/learn/simple_command/Main.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package learn.simple_command;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Invoker invoker = new Invoker();
|
||||
Receiver receiver = new Receiver();
|
||||
Command command = new ConcreteCommand(receiver);
|
||||
invoker.setSlot(command);
|
||||
|
||||
invoker.buttonWasPushed();
|
||||
}
|
||||
}
|
||||
7
src/learn/simple_command/Receiver.java
Normal file
7
src/learn/simple_command/Receiver.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package learn.simple_command;
|
||||
|
||||
public class Receiver {
|
||||
public void action() {
|
||||
System.out.println("Do my action");
|
||||
}
|
||||
}
|
||||
8
src/learn/simple_factory_method/ConcreteCreator.java
Normal file
8
src/learn/simple_factory_method/ConcreteCreator.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package learn.simple_factory_method;
|
||||
|
||||
public class ConcreteCreator extends Creator {
|
||||
@Override
|
||||
public Product factoryMethod() {
|
||||
return new ConcreteProduct("Product");
|
||||
}
|
||||
}
|
||||
14
src/learn/simple_factory_method/ConcreteProduct.java
Normal file
14
src/learn/simple_factory_method/ConcreteProduct.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package learn.simple_factory_method;
|
||||
|
||||
public class ConcreteProduct implements Product {
|
||||
private String category;
|
||||
|
||||
public ConcreteProduct(String category) {
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConcreteProduct('" + category + "')";
|
||||
}
|
||||
}
|
||||
10
src/learn/simple_factory_method/Creator.java
Normal file
10
src/learn/simple_factory_method/Creator.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package learn.simple_factory_method;
|
||||
|
||||
public abstract class Creator {
|
||||
abstract public Product factoryMethod();
|
||||
|
||||
public void anOperation() {
|
||||
Product product = this.factoryMethod();
|
||||
System.out.println("Do something with product " + product);
|
||||
}
|
||||
}
|
||||
8
src/learn/simple_factory_method/Main.java
Normal file
8
src/learn/simple_factory_method/Main.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package learn.simple_factory_method;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Creator creator = new ConcreteCreator();
|
||||
creator.anOperation();
|
||||
}
|
||||
}
|
||||
4
src/learn/simple_factory_method/Product.java
Normal file
4
src/learn/simple_factory_method/Product.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package learn.simple_factory_method;
|
||||
|
||||
public interface Product {
|
||||
}
|
||||
Reference in New Issue
Block a user