写适配器模式、观察者模式?【面试题详解】

今天爱分享给大家带来写适配器模式、观察者模式?【面试题详解】,希望能够帮助到大家。
适配器模式:
Target:定义 Client 使用的与特定领域相关的接口


public interface Target
{
void request();
}


Adaptee:现在需要适配的已经存在的接口


public class Adaptee
{
public void specificRequest(){}
}


Adapter:对 Adaptee 的接口与 Target 接口进行适配


public class Adapter implements Target
{
public Adapter(Adaptee adaptee)
{
super();
this.adaptee = adaptee;
}
public void request()
{
adaptee.specificRequest();
}
private Adaptee adaptee;
}


观察者模式:
Subject:
1. Subject 可以加将 Observer 对象的引用保存在一个聚集中,每个 Subject 可以有任意个 Observer。
2. 提供注册和删除 Observer 对象的接口。

public interface Subject
{
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers();
}



Observer:
1. 为那些在 Subject 发生改变时需获得通知的对象定义一个更新接口。


public interface Observer
{
public void update();
}


Concrete Subject:
1. 将有关状态存入各 ConcreteObserver 对象,当它的状态发生改变时,向它的各个观察者发出通知。



public class ConcreteSubject implements Subject
{
private ArrayList observers;
public ConcreteSubject()
{
observers = new ArrayList();
}
public void registerObserver(Observer o)
{
observers.add(o);
}
public void removeObserver(Observer o)
{
int i = observers.indexOf(o);
if (i >= 0)
{
observers.remove(i);
}
}
public void notifyObservers()
{
for (int i = 0; i < observers.size(); i++)
{
observer = observers.get(i);
observer.update();
}
}
public void stateChanged()
{
notifyObservers();
}
public void setState()
{
stateChanged();
}}

Concrete Observer:
1. 维护一个指向 ConcreteSubject 对象的引用。
2. 存储有关状态,这些状态应与 Subject 的状态保持一致。
3. 实现 Observer 的更新接口以使自身状态与 Subject 的状态保持一致。



public class ConcreteObserver implements Observer
{
private Subject subject;
public ConcreteObserver(Subject subject)
{
this.subject = subject;
subject.registerObserver(this);
}
public void update()
{
// your code
}}

人已赞赏
Java

描述工厂模式和单例优缺点,举例在什么情况下用。【面试题详解】

2020-12-11 9:22:12

Java

适配器模式解释【面试题详解】

2020-12-11 9:27:08

'); })();