Java 개발의 대표적인 개념
Static
public class Counter {
public static int count = 0;
public Counter() {
count++;
}
}
public class Utility {
public static int add(int a, int b) {
return a + b;
}
}
public class Example {
static {
System.out.println("Static block executed");
}
}
Singleton Pattern
public class Singleton {
private static Singleton instance;
private Singleton() { }
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
MVC
MVVM
일반적인 Java 개발 패턴
public class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
}
return null;
}
}
하나의 개체가 상태를 변경하면 모든 종속 항목에
알림이 전송되도록 개체 간의 일대다 종속성을 정의
public interface Observer {
void update();
}
public class Subject {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void notifyAllObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
동일한 클래스의 다른 개체의 동작에 영향을 주지 않고
개별 개체에 동작을 동적으로 추가
public interface Car {
void assemble();
}
public class BasicCar implements Car {
@Override
public void assemble() {
System.out.print("Basic Car.");
}
}
public class CarDecorator implements Car {
protected Car car;
public CarDecorator(Car car) {
this.car = car;
}
@Override
public void assemble() {
this.car.assemble();
}
}
public class SportsCar extends CarDecorator {
public SportsCar(Car car) {
super(car);
}
@Override
public void assemble() {
super.assemble();
System.out.print(" Adding features of Sports Car.");
}
}