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