观察者模式
package designer. one ;
import java. util. ArrayList ;
public abstract class Observer {
public ArrayList < Player > players = new ArrayList < > ( ) ;
public void add ( Player player) {
players. add ( player) ;
}
public void remove ( Player player) {
players. remove ( player) ;
}
public abstract void notifyPlayer ( ) ;
}
package designer. one ;
public class SendObserver extends Observer {
@Override
public void notifyPlayer ( ) {
System . out. println ( "老师授课结束" ) ;
for ( Player player : players) {
player. response ( ) ;
}
}
}
package designer. one ;
public class TeacherObserver extends Observer {
@Override
public void notifyPlayer ( ) {
System . out. println ( "老师走过来了" ) ;
for ( Player player : players) {
player. response ( ) ;
}
}
}
package designer. one ;
public interface Player {
void response ( ) ;
}
package designer. one ;
public class StudentLol implements Player {
public String name;
public StudentLol ( String name) {
this . name = name;
}
@Override
public void response ( ) {
System . out. println ( this . name + "停止了LOL游戏" ) ;
}
}
package designer. one ;
public class StudentShengBing implements Player {
public String name = "" ;
public StudentShengBing ( String name) {
this . name = name;
}
@Override
public void response ( ) {
System . out. println ( this . name + "接收视频" ) ;
}
}
package designer. one ;
public class TestObserver {
public static void main ( String [ ] args) {
StudentLol xiaoming = new StudentLol ( "小明" ) ;
StudentEnjoy xiaoqing = new StudentEnjoy ( "小青" ) ;
Observer banzhang = new TeacherObserver ( ) ;
banzhang. add ( xiaoming) ;
banzhang. add ( xiaoqing) ;
banzhang. notifyPlayer ( ) ;
StudentShengBing xiaozhang = new StudentShengBing ( "小张" ) ;
Observer sendObserver = new SendObserver ( ) ;
sendObserver. add ( xiaozhang) ;
sendObserver. notifyPlayer ( ) ;
System . out. println ( "game over" ) ;
}
}
代理模式
package two ;
public class Yingyeting {
public void sell ( ) {
System . out. println ( "卖出去一张票" ) ;
}
}
package two ;
public class Proxy {
private Yingyeting yyt;
public Proxy ( ) {
this . yyt= new Yingyeting ( ) ;
}
public void sell ( ) {
System . out. println ( "吃拿卡要" ) ;
yyt. sell ( ) ;
}
}
package two ;
public class Consumer {
Yingyeting yyt = new Yingyeting ( ) ;
Proxy huangniu = new Proxy ( ) ;
public void ownerBuy ( ) {
yyt. sell ( ) ;
}
public void buy ( ) {
huangniu. sell ( ) ;
}
}