抽象工厂模式.java
public abstract class AbstractFactory {
public abstract Vehicle create();
public abstract Weapon create();
public abstract Food create();
}
public class Factory extends AbstractFactory {
@Override
public Vehicle create() {
return new RangeRover();
}
@Override
public Weapon create() {
return new AK47();
}
@Override
public Food create() {
return new Apple();
}
}
public class Test {
public static void main(String[] args) {
AbstractFactory abf = new Factory();
Vehicle v = abf.create();
v.run();
Weapon w = abf.create();
w.fire();
Food f = abf.create();
f.price();
}
}
单例模式.java
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static synchronized getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
}
}
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
工厂方法模式.java
public interface Moveable {
void run();
}
public class Plane implements Moveable {
@Override
public void run() {
System.out.println("飞机飞起来了!");
}
}
public class Car implements Moveable {
@Override
public void run() {
System.out.println("汽车开起来了!");
}
}
public abstract class Factory {
abstract Moveable create();
}
public class PlaneFactory extends Factory {
public Moveable create() {
return new Plane();
}
}
public class CarFactory extends Factory {
public Moveable create() {
return new Car();
}
}
public class Test {
public static void main(String[] args) {
Factory fac = new CarFactory();
Moveable car = fac.create();
car.run();
}
}
观察者模式.java
public interface Watcher {
public void update(String str);
}
public interface Watched {
public void addWatcher(Watcher watcher);
public void removeWatcher(Watcher watcher);
public void notifyWatchers(String str);
}
public class ConcreteWatcher implements Watcher {
@Override
public void update(String str) {
System.out.println(str);
}
}
public class ConcreteWatched implements Watched {
private List<Watcher> list = new ArrayList<>();
@Override
public void addWatcher(Watcher watcher) {
list.add(watcher);
}
@Override
public void removeWatcher(Watcher watcher) {
list.remove(watcher);
}
@Override
public void notifyWatchers(String str) {
for (Watcher watcher : list) {
watcher.update(str);
}
}
}
public class Test {
public static void main(String[] args) {
Watched girl = new ConcreteWatched();
Watcher boy1 = new ConcreteWatcher();
Watcher boy2 = new ConcreteWatcher();
Watched boy3 = new ConcreteWatcher();
girl.addWatcher(boy1);
girl.addWatcher(boy2);
girl.addWatcher(boy3);
girl.notifyWatchers("我美不美?");
}
}