1、工厂方法模式
/**
* 工厂方法模式
*/
public interface FactoryMethod {
public Product create();
}
class FactoryA implements FactoryMethod{
@Override
public Product create() {
return new ProductA();
}
}
class FactoryB implements FactoryMethod{
@Override
public Product create() {
return new ProductB();
}
}
class FactoryMethodTest{
public static void main(String[] args){
new FactoryA().create();
new FactoryB().create();
}
}
2、线程安全的单例模式
/**
* 线程安全的单例模式
*/
public class SingleTon {
private SingleTon(){}
private static SingleTon singleton = null;
public static SingleTon create(){
if(singleton != null){
return singleton;
}else{
synchronized (SingleTon.class) {
return new SingleTon();
}
}
}
}
3、观察者模式(发布/订阅模式)
/**
* 发布/订阅模式
*/
public class SubjectObserver {
class Subject{
List<Observer> observerList = new ArrayList<Observer>();
void addObserver(Observer observer){
observerList.add(observer);
}
void deleteObserver(Observer observer){
Iterator<Observer> observers = observerList.iterator();
while (observers.hasNext()){
if(observer==observers.next()){
observers.remove();
}
}
}
void update(String something){
Iterator<Observer> observers = observerList.iterator();
while (observers.hasNext()){
observers.next().show(something);
}
}
}
class Observer{
String name;
Observer(String name){
this.name = name;
}
void show(String something){
System.out.println(name+"得到了通知:"+something);
}
}
public static void main(String args[]){
SubjectObserver so = new SubjectObserver();
Subject subject = so.new Subject();
Observer observer1 = so.new Observer("A");
Observer observer2 = so.new Observer("B");
Observer observer3 = so.new Observer("C");
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.addObserver(observer3);
subject.deleteObserver(observer1);
subject.update("明天要下雨");
}
}