Димитров Вячеслав Михайлович, старший преподаватель кафедры ИМО, dimitrov@cs.petrsu.ru
package ru.nest.son;
import java.util.Objects;
public class Room {
private String number;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Room room = (Room) o;
return number.equals(room.number);
}
@Override
public int hashCode() {
return Objects.hash(number);
}
}
package ru.nest.son;
public class Room {
private String number;
public String getNumber() {}
public void setNumber(String newNumber) {}
public int saveToDB() {
// ... Код для сохранения в БД.
}
}
package ru.nest.son;
public class Floor {
private int number;
public int getNumber() {}
public setNumber(int newNumber) {}
public int saveToDB() {
// ... Код для сохранения в БД.
}
}
// Model - интерфейс.
public class Room extends Model {
private String number;
// ...
}
public class Floor extends Model {
private int number;
// ...
}
public class DBHellper {
public int saveToDB(Model o) {
// Код для сохранения в БД.
}
}
// Model - интерфейс.
public class Model {
public int saveToDB() {
// Код для сохранения в БД.
}
}
public class Room extends Model {
private String number;
// ...
}
public class Floor extends Model {
private int number;
// ...
}
public class Floor extends Model {
private int number;
// ...
private String up;
public String getUp() {
return up;
}
}
public function handleUp(floors: ArrayList) {
for(Floor f: floors) {
if (r.getUp().equals('stairs')) {
calculateTime('slow', 'hard');
} else if (r.getUp().equals('escalator')) {
calculateTime('slow', 'easy');
}
}
}
public function handleUp(floors: ArrayList) {
for(Floor f: floors) {
if (r.getUp().equals('stairs')) {
handleUp('slow', 'hard');
} else if (r.getUp().equals('escalator')) {
handleUp('slow', 'easy');
} else if (r.getUp().equals('elevator')) {
handleUp('quickly', 'easy');
}
}
}
package ru.nest.son;
public class Floor {
private Up up;
}
abstract class Up {
abstract public String getSpeed();
abstract public String getComplexity();
}
package ru.nest.son;
public class Stairs extends Up {
public String getSpeed() {
return "slow";
}
public String getComplexity() {
return "hard";
}
}
package ru.nest.son;
public class Escalator extends Up {
public String getSpeed() {
return "slow";
}
public String getComplexity() {
return "easy";
}
}
public function handleUp(floors: ArrayList) {
for(Floor f: floors) {
calculateTime(f.getUp().getSpeed(), f.getUp().getComplexity());
}
}
public function handleUp(floors: ArrayList) {
for(Floor f: floors) {
if (f.getUp() instanceof Stairs) {
calculateSafity(0.5);
} else if (r.getUp() instanceof Escalator) {
calculateSafity(0.1);
}
}
abstract class Up {
abstract public String getSpeed();
abstract public String getComplexity();
abstract public float getSafity();
}
public function handleUp(floors: ArrayList) {
for(Floor f: floors) {
calculateSafity(f.getUp().getSafity());
}
}
abstract class Shape {
abstract public void drawCircle();
abstract public void drawSquare();
abstract public void drawRectangle();
}
public class Circle implements Shape {
public void drawCircle() {
// ...
}
public void drawSquare() {
// ...
}
public void drawRectangle() {
// ...
}
}
public class Square implements Shape {
public void drawCircle() {
// ...
}
public void drawSquare() {
// ...
}
public void drawRectangle() {
// ...
}
}
abstract class Shape {
abstract public void draw();
}
abstract class ICircle {
abstract public void drawCircle();
}
abstract class ISquare {
abstract public void drawSquare();
}
abstract class IRectangle {
abstract public void drawRectangle();
}
public class Circle implements ICircle {
public void drawCircle() {
// ...
}
}
public class Square implements ISquare {
public void drawSquare() {
// ...
}
}
public class Saver {
XMLModel model = null;
public Saver(XMLModel model) {
this.model = model;
}
public void saveFloor(Floor f) {
save(model.transform(f));
}
}
abstract class IModel {
abstract function View transform(Model);
}
public class XMLModel extends IModel {
function View transform(Model) {
// ...
}
}
public class JSONModel extends IModel {
function View transform(Model) {
// ...
}
}
public class Saver {
IModel model = null;
public Saver(IModel model) {
this.model = model;
}
public void saveFloor(Floor f) {
save(model.transform(f));
}
}