diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Bank.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Bank.java new file mode 100644 index 0000000000000000000000000000000000000000..759883802dce8d87fc5eed3e5533fd8683ef2ae5 --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Bank.java @@ -0,0 +1,23 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +public class Bank { + // 信用验证 + public boolean checkCredit(String user) { + if ("zhangsan".equals(user)) { + + return true; + } + throw new IllegalArgumentException("买家信用不够"); + } + + public void dealMoney(Buyer buyer, Homer homer) { + homer.money += homer.home.price; + buyer.money -= homer.home.price; + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Buyer.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Buyer.java new file mode 100644 index 0000000000000000000000000000000000000000..91d0f021c88ff2f144168cc2e2ddb638c52753a0 --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Buyer.java @@ -0,0 +1,33 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +public class Buyer { + /** + * 姓名 + */ + public String name; + /** + * 拥有的金钱 + */ + public int money; + + public Home home; + + + public Buyer(String name, int money) { + this.money = money; + this.name = name; + } + + public void buyHome(Mediator mediator) throws Exception { + Homer homer = mediator.findHomer(); + mediator.checkCredit(this); + mediator.checkMoney(this.money, homer.home.price); + mediator.deal(this, homer); + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Home.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Home.java new file mode 100644 index 0000000000000000000000000000000000000000..cba24ad2f366c123996bd4ecd3aacbf413b1e7a3 --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Home.java @@ -0,0 +1,24 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +import lombok.ToString; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +@ToString +public class Home { + // 户主 + public String master; + // 价格 + public int price; + + + + public Home(String master, int price) { + this.master = master; + this.price = price; + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/HomeRegister.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/HomeRegister.java new file mode 100644 index 0000000000000000000000000000000000000000..314e2175c1caef69ddc884deac4480660a9da1b3 --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/HomeRegister.java @@ -0,0 +1,63 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +public class HomeRegister { + + private Map register = new HashMap<>(); + + /** + * 办理房产证,注册房源信息 + * + * @param name + * @param home + */ + public void register(String name, Home home) { + register.put(name, home); + } + + /** + * 交易 + * + * @param buyer + * @param homer + * @throws Exception + */ + public void deal(Buyer buyer, Homer homer) throws Exception { + Home home = register.get(homer.name); + if (home == null) { + throw new Exception("卖家没有登记的房源 " + homer.name); + } + if (homer.home != home) { + throw new Exception("卖家登记的房源和买卖的不一致 " + homer.name); + } + Home remove = register.remove(homer.name); + register.put(buyer.name, remove); + buyer.home = homer.home; + homer.home = null; + buyer.home.master = buyer.name; + + } + + /** + * 房源是否存在 + * + * @param name + * @param home + * @return + */ + public boolean homeExist(String name, Home home) { + Home home1 = register.get(name); + if (home1 == home) { + return true; + } + return false; + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Homer.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Homer.java new file mode 100644 index 0000000000000000000000000000000000000000..cbb4f59d4358a0a74775dcf72048d5f2b703b3aa --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Homer.java @@ -0,0 +1,23 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +import lombok.ToString; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +@ToString +public class Homer { + public String name; + public Home home; + + public int money; + + + public Homer(String name, Home home) { + this.name = name; + this.home = home; + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Main.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..8df55041a2056cbad34722cf890f36efb1e5f39b --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Main.java @@ -0,0 +1,37 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +public class Main { + public static void main(String[] args) throws Exception { + HomeRegister homeRegister = new HomeRegister(); + Mediator m = new Mediator(homeRegister); + Bank bank = new Bank(); + m.setBank(bank); + + String homerName = "lisi"; + Home home = new Home(homerName,100000); + homeRegister.register(homerName,home); + Homer homer = new Homer(homerName,home); + // 申请卖房 + m.registerHomer(homer); + + // 买房流程 + String buyerName = "zhangsan"; + + Buyer buyer = new Buyer(buyerName,2000); + System.out.println("买家买了房子 :买家" + buyer.name + " 房子"+ buyer.home +" 余额"+buyer.money); + System.out.println("卖家卖了房子 :卖家" + homer.name + " 房子"+ homer.home +" 余额"+homer.money); + System.out.println("买房前"); + buyer.buyHome(m); + + System.out.println("买家买了房子 :买家" + buyer.name + " 房子"+ buyer.home +" 余额"+buyer.money); + System.out.println("卖家卖了房子 :卖家" + homer.name + " 房子"+ homer.home +" 余额"+homer.money); + + + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Mediator.java b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Mediator.java new file mode 100644 index 0000000000000000000000000000000000000000..0b222be93ec0a02b2be13c5d50574874de19920e --- /dev/null +++ b/java/com/kongxiang/raindrop/dp/type/behavior/mediator/Mediator.java @@ -0,0 +1,58 @@ +package com.kongxiang.raindrop.dp.type.behavior.mediator; + +/** + * @author 孔翔 + * @since 2023-10-19 + * copyright for author : 孔翔 at 2023-10-19 + * dp + */ +public class Mediator { + + private HomeRegister homeRegister; + Bank bank; + + public Mediator(HomeRegister aHomeRegister) { + this.homeRegister = aHomeRegister; + } + + public void setBank(Bank bank) { + this.bank = bank; + } + + /** + * 卖房者 + */ + private Homer homer; + + public void registerHomer(Homer homer) { + if (null != homer.home) { + + } + this.homer = homer; + + } + + public Homer findHomer() { + return homer; + } + + public boolean checkCredit(Buyer buyer) throws Exception { + return bank.checkCredit(buyer.name); + } + + public void checkMoney(int money, int price) { + if (money <= price){ + throw new IllegalArgumentException("买家金额不够"); + } + } + + /** + * 交易 + * @param buyer + * @param homer + */ + public void deal(Buyer buyer, Homer homer) throws Exception { + bank.dealMoney(buyer,homer); + homeRegister.deal(buyer,homer); + } +} diff --git a/java/com/kongxiang/raindrop/dp/type/behavior/observer/pubsub/Dispatcher.java b/java/com/kongxiang/raindrop/dp/type/behavior/observer/pubsub/Dispatcher.java deleted file mode 100644 index 07d304ab5ea82d7308f689055fd325d8bf3a1d86..0000000000000000000000000000000000000000 --- a/java/com/kongxiang/raindrop/dp/type/behavior/observer/pubsub/Dispatcher.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.kongxiang.raindrop.dp.type.behavior.observer.pubsub; - -import com.kongxiang.raindrop.dp.type.behavior.observer.Observer; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author 孔翔 - * @since 2023-10-19 - * copyright for author : 孔翔 at 2023-10-19 - * dp - */ -public class Dispatcher { - - /** - * 维护观察者的列表 - */ - protected List observerList = new ArrayList<>(); - - /** - * 增加一个观察者 - */ - public void register(Observer observer) { - observerList.add(observer); - } - - /** - * 移除一个观察者 - */ - public void remove(Observer observer) { - observerList.remove(observer); - } - - /** - * 通知方法 - */ - public void notifyAllObserver() { - observerList.forEach((o) -> o.update(this)); - } -}