一、背景
哎呀时间过得真快已经2020,但是依然是单身但是你并不想继续单身下去于是你就去到了啥百合网啥的。注册了一个账号,并且把你心中理想女友的要求,这时你不需要一直等着,只要百合网有符合你要求的女生他自然就会通知你。
二、百合网
这时百合网就可以看作一个主题,他提供了注册
、通知
等方法。那百合网可以抽象为如下的接口
public interface MarriageAgency {
/**
* 注册
* @param human
*/
void register(Human human);
/**
* 取消通知
* @param human
*/
void cancel(Human human);
/**
* 有符合要求的将会通知对应的注册的人
*/
void sendMessage();
}
百合网有这些女生的数据包含身高、体重、学历、职业
等,当有一个新的女注册进来的说他需要找一个男朋友的时候,如果符合要求它就会发生消息通知你。那么百合网具体的实现如下:
public class BaiHe implements MarriageAgency {
private float height;
private float weight;
private String educational;
private String profession;
private ArrayList<Human> peo;
public BaiHe(){
peo = new ArrayList<>();
}
@Override
public void register(Human human) {
peo.add(human);
}
@Override
public void cancel(Human human) {
if (peo.contains(human)){
peo.remove(human);
}
}
@Override
public void sendMessage() {
for (Human human : peo) {
human.sendMessage(height,weight,educational,profession);
}
}
public void girlRegister(float height,float weight,String educational,String profession){
this.height = height;
this.weight = weight;
this.educational = educational;
this.profession = profession;
//通知
sendMessage();
}
}
这时可以把所有渴求对象的男士或者女士都可以抽象为Human
接口,他们只需要接口到百合网的这个消息,然后自己去那个妹子联系,剩下你们懂的。
public interface Human {
/**
* 接受百合网的消息
* @param height
* @param weight
* @param educational
* @param profession
*/
void sendMessage(float height,float weight,String educational,String profession);
/**
* 约会
*/
void appointment();
}
程序员自然也是这其中之一,但是程序员在接受到消息的时候,也需要一个载体来显示消息,在这里载体的抽象就不展示了就是一个display
方法。
public class Programmer implements Human, Phone {
private float height;
private float weight;
private String educational;
private String profession;
private MarriageAgency marriageAgency;
public Programmer(MarriageAgency people){
this.marriageAgency = people;
this.marriageAgency.register(this);
}
@Override
public void display() {
System.out.println("A girl height: "+ height + "," + "weight: "+ "," + "educational: "+ educational + "," + "profession: "+ profession );
}
@Override
public void sendMessage(float height, float weight, String educational, String profession) {
this.height = height;
this.weight = weight;
this.educational = educational;
this.profession = profession;
//收到百合网的消息
display();
//约会中
appointment();
}
@Override
public void appointment() {
System.out.println("和女孩子约会中.....");
}
}
就这样找到了一个女朋友,在你有女朋友之后你就取消了消息通知
public static void main(String[] args) {
//百合网
BaiHe baiHe = new BaiHe();
//你注册了
Programmer programmer = new Programmer(baiHe);
//第一个女孩注册
baiHe.girlRegister(1.7f,50,"博士","老师");
//第二个女孩注册
baiHe.girlRegister(1.75f,50,"硕士","程序员");
//你和前面女孩好了,你取消了消息通知
programmer.cancel();
//又有女孩注册了
baiHe.girlRegister(1.72f,52,"本科","医生");
baiHe.girlRegister(1.73f,51,"硕士","教师");
//可是你再也收不消息
}
A girl height: 1.7,weight: ,educational: 博士,profession: 老师
和女孩子约会中.....
A girl height: 1.75,weight: ,educational: 硕士,profession: 程序员
和女孩子约会中.....