mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-11-15 21:53:50 +08:00
u
This commit is contained in:
@@ -25,13 +25,7 @@
|
||||
<meta name="generator" content="Hexo 4.2.0">
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
|
||||
<div class="book-container">
|
||||
|
||||
<div class="book-sidebar">
|
||||
@@ -55,373 +49,190 @@
|
||||
<li><a href="/" class="current-tab">首页</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<ul class="uncollapsible">
|
||||
|
||||
<li><a href="../">上一级</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<ul class="uncollapsible">
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/00 生活中的设计模式:启程之前,请不要错过我.md.html">00 生活中的设计模式:启程之前,请不要错过我.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/01 监听模式:坑爹的热水器.md.html">01 监听模式:坑爹的热水器.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/02 适配模式:身高不够鞋来凑.md.html">02 适配模式:身高不够鞋来凑.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/03 状态模式:人与水的三态.md.html">03 状态模式:人与水的三态.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/04 单例模式:你是我生命的唯一.md.html">04 单例模式:你是我生命的唯一.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/05 职责模式:我的假条去哪了.md.html">05 职责模式:我的假条去哪了.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
<a class="current-tab" href="/专栏/白话设计模式 28 讲(完)/06 中介模式:找房子问中介.md.html">06 中介模式:找房子问中介.md.html</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/07 代理模式:帮我拿一下快递.md.html">07 代理模式:帮我拿一下快递.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/08 装饰模式:你想怎么穿就怎么穿.md.html">08 装饰模式:你想怎么穿就怎么穿.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/09 工厂模式:你要拿铁还是摩卡.md.html">09 工厂模式:你要拿铁还是摩卡.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/10 迭代模式:下一个就是你了.md.html">10 迭代模式:下一个就是你了.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/11 组合模式:自己组装电脑.md.html">11 组合模式:自己组装电脑.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/12 构建模式:想要车还是庄园.md.html">12 构建模式:想要车还是庄园.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/13 克隆模式:给你一个分身术.md.html">13 克隆模式:给你一个分身术.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/14 策略模式:怎么来不重要,人到就行.md.html">14 策略模式:怎么来不重要,人到就行.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/15 命令模式:大闸蟹,走起!.md.html">15 命令模式:大闸蟹,走起!.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/16 备忘模式:好记性不如烂笔头.md.html">16 备忘模式:好记性不如烂笔头.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/17 享元模式:颜料很贵必须充分利用.md.html">17 享元模式:颜料很贵必须充分利用.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/18 外观模式:学妹别慌,学长帮你.md.html">18 外观模式:学妹别慌,学长帮你.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/19 访问模式:一千个读者一千个哈姆雷特.md.html">19 访问模式:一千个读者一千个哈姆雷特.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/20 生活中的设计模式:与经典设计模式的不解渊源.md.html">20 生活中的设计模式:与经典设计模式的不解渊源.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/21 生活中的设计模式:那些未完待续的设计模式.md.html">21 生活中的设计模式:那些未完待续的设计模式.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/22 深入解读过滤器模式:制作一杯鲜纯细腻的豆浆.md.html">22 深入解读过滤器模式:制作一杯鲜纯细腻的豆浆.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/23 深入解读对象池技术:共享让生活更便捷.md.html">23 深入解读对象池技术:共享让生活更便捷.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/24 深入解读回调机制:把你技能亮出来.md.html">24 深入解读回调机制:把你技能亮出来.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/25 谈谈我对设计模式的理解.md.html">25 谈谈我对设计模式的理解.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/26 谈谈我对设计原则的思考.md.html">26 谈谈我对设计原则的思考.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/专栏/白话设计模式 28 讲(完)/27 谈谈我对项目重构的看法.md.html">27 谈谈我对项目重构的看法.md.html</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
|
||||
|
||||
<div class="sidebar-toggle-inner"></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
function add_inner() {
|
||||
@@ -431,9 +242,6 @@
|
||||
inner.classList.add('show')
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function remove_inner() {
|
||||
|
||||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||||
@@ -441,9 +249,6 @@
|
||||
inner.classList.remove('show')
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function sidebar_toggle() {
|
||||
|
||||
let sidebar_toggle = document.querySelector('.sidebar-toggle')
|
||||
@@ -473,9 +278,6 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function open_sidebar() {
|
||||
|
||||
let sidebar = document.querySelector('.book-sidebar')
|
||||
@@ -499,13 +301,7 @@ function hide_canvas() {
|
||||
overlay.classList.remove('show')
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<div class="off-canvas-content">
|
||||
|
||||
<div class="columns">
|
||||
@@ -587,9 +383,6 @@ function hide_canvas() {
|
||||
<pre><code class="language-python">class HouseInfo:
|
||||
|
||||
"房源信息"
|
||||
|
||||
|
||||
|
||||
def __init__(self, area, price, hasWindow, bathroom, kitchen, address, owner):
|
||||
|
||||
self.__area = area
|
||||
@@ -605,21 +398,12 @@ function hide_canvas() {
|
||||
self.__address = address
|
||||
|
||||
self.__owner = owner
|
||||
|
||||
|
||||
|
||||
def getAddress(self):
|
||||
|
||||
return self.__address
|
||||
|
||||
|
||||
|
||||
def getOwnerName(self):
|
||||
|
||||
return self.__owner.getName()
|
||||
|
||||
|
||||
|
||||
def showInfo(self, isShowOwner = True):
|
||||
|
||||
print("面积:" + str(self.__area) + "平米",
|
||||
@@ -635,35 +419,20 @@ function hide_canvas() {
|
||||
"地址:" + self.getAddress(),
|
||||
|
||||
"房东:" + self.getOwnerName() if isShowOwner else "")
|
||||
|
||||
|
||||
|
||||
class HousingAgency:
|
||||
|
||||
"房屋中介"
|
||||
|
||||
|
||||
|
||||
def __init__(self, name):
|
||||
|
||||
self.__houseInfos = []
|
||||
|
||||
self.__name = name
|
||||
|
||||
|
||||
|
||||
def getName(self):
|
||||
|
||||
return self.__name
|
||||
|
||||
|
||||
|
||||
def addHouseInfo(self, houseInfo):
|
||||
|
||||
self.__houseInfos.append(houseInfo)
|
||||
|
||||
|
||||
|
||||
def removeHouseInfo(self, houseInfo):
|
||||
|
||||
for info in self.__houseInfos:
|
||||
@@ -671,17 +440,11 @@ class HousingAgency:
|
||||
if(info == houseInfo):
|
||||
|
||||
self.__houseInfos.remove(info)
|
||||
|
||||
|
||||
|
||||
def getSearchCondition(self, description):
|
||||
|
||||
"这里有一个将用户描述信息转换成搜索条件的逻辑。(为节省篇幅这里原样返回描述)"
|
||||
|
||||
return description
|
||||
|
||||
|
||||
|
||||
def getMatchInfos(self, searchCondition):
|
||||
|
||||
"根据房源信息的各个属性查找最匹配的信息。(为节省篇幅这里略去匹配的过程,全部输出)"
|
||||
@@ -693,9 +456,6 @@ class HousingAgency:
|
||||
info.showInfo(False)
|
||||
|
||||
return self.__houseInfos
|
||||
|
||||
|
||||
|
||||
def signContract(self, houseInfo, time):
|
||||
|
||||
"与房东签订协议"
|
||||
@@ -703,23 +463,14 @@ class HousingAgency:
|
||||
print(self.getName(), "与房东", houseInfo.getOwnerName(), "签订", houseInfo.getAddress(),
|
||||
|
||||
"的房子的的租赁合同,租期", time, "年。 合同期内", self.getName(), "有权对其进行使用和转租!")
|
||||
|
||||
|
||||
|
||||
def signContracts(self, time):
|
||||
|
||||
for info in self.__houseInfos :
|
||||
|
||||
self.signContract(info, time)
|
||||
|
||||
|
||||
|
||||
class HouseOwner:
|
||||
|
||||
"房东"
|
||||
|
||||
|
||||
|
||||
def __init__(self, name, address):
|
||||
|
||||
self.__name = name
|
||||
@@ -727,27 +478,15 @@ class HouseOwner:
|
||||
self.__address = address
|
||||
|
||||
self.__houseInfo = None
|
||||
|
||||
|
||||
|
||||
def getName(self):
|
||||
|
||||
return self.__name
|
||||
|
||||
|
||||
|
||||
def getAddress(self):
|
||||
|
||||
return self.__address
|
||||
|
||||
|
||||
|
||||
def setHouseInfo(self, area, price, hasWindow, bathroom, kitchen):
|
||||
|
||||
self.__houseInfo = HouseInfo(area, price, hasWindow, bathroom, kitchen, self.getAddress(), self)
|
||||
|
||||
|
||||
|
||||
def publishHouseInfo(self, agency):
|
||||
|
||||
agency.addHouseInfo(self.__houseInfo)
|
||||
@@ -755,27 +494,15 @@ class HouseOwner:
|
||||
print(self.getName() + "在", agency.getName(), "发布房源出租信息:")
|
||||
|
||||
self.__houseInfo.showInfo()
|
||||
|
||||
|
||||
|
||||
class Custom:
|
||||
|
||||
"房客,租房人"
|
||||
|
||||
|
||||
|
||||
def __init__(self, name):
|
||||
|
||||
self.__name = name
|
||||
|
||||
|
||||
|
||||
def getName(self):
|
||||
|
||||
return self.__name
|
||||
|
||||
|
||||
|
||||
def findHouse(self, description, agency):
|
||||
|
||||
print("我是" + self.getName() + ", 我想要找一个\"" + description + "\"的房子")
|
||||
@@ -783,9 +510,6 @@ class Custom:
|
||||
print()
|
||||
|
||||
return agency.getMatchInfos(agency.getSearchCondition(description))
|
||||
|
||||
|
||||
|
||||
def seeHouse(self, houseInfos):
|
||||
|
||||
"去看房,选择最使用的房子。(这里省略看房的过程)"
|
||||
@@ -793,9 +517,6 @@ class Custom:
|
||||
size = len(houseInfos)
|
||||
|
||||
return houseInfos[size-1]
|
||||
|
||||
|
||||
|
||||
def signContract(self, houseInfo, agency, time):
|
||||
|
||||
"与中介签订协议"
|
||||
@@ -803,9 +524,6 @@ class Custom:
|
||||
print(self.getName(), "与中介", agency.getName(), "签订", houseInfo.getAddress(),
|
||||
|
||||
"的房子的租赁合同, 租期", time, "年。合同期内", self.__name, "有权对其进行使用!")
|
||||
|
||||
|
||||
|
||||
</code></pre>
|
||||
|
||||
<p>测试代码:</p>
|
||||
@@ -833,15 +551,9 @@ class Custom:
|
||||
wangwu.publishHouseInfo(myHome)
|
||||
|
||||
print()
|
||||
|
||||
|
||||
|
||||
myHome.signContracts(3)
|
||||
|
||||
print()
|
||||
|
||||
|
||||
|
||||
tony = Custom("Tony")
|
||||
|
||||
houseInfos = tony.findHouse("18平米左右,要有独卫,要有窗户,最好是朝南,有厨房更好!价位在2000左右", myHome)
|
||||
@@ -855,9 +567,6 @@ class Custom:
|
||||
AppropriateHouse = tony.seeHouse(houseInfos)
|
||||
|
||||
tony.signContract(AppropriateHouse, myHome, 1)
|
||||
|
||||
|
||||
|
||||
</code></pre>
|
||||
|
||||
<p>输出结果:</p>
|
||||
@@ -873,21 +582,12 @@ class Custom:
|
||||
王五在 我爱我家 发布房源出租信息:
|
||||
|
||||
面积:18平米 价格:2600元 窗户:有 卫生间:独立卫生间 厨房:有 地址:金隅美和园 房东:王五
|
||||
|
||||
|
||||
|
||||
我爱我家 与房东 张三 签订 上地西里 的房子的的租赁合同,租期 3 年。 合同期内 我爱我家 有权对其进行使用和转租!
|
||||
|
||||
我爱我家 与房东 李四 签订 当代城市家园 的房子的的租赁合同,租期 3 年。 合同期内 我爱我家 有权对其进行使用和转租!
|
||||
|
||||
我爱我家 与房东 王五 签订 金隅美和园 的房子的的租赁合同,租期 3 年。 合同期内 我爱我家 有权对其进行使用和转租!
|
||||
|
||||
|
||||
|
||||
我是Tony, 我想要找一个"18平米左右,要有独卫,要有窗户,最好是朝南,有厨房更好!价位在2000左右"的房子
|
||||
|
||||
|
||||
|
||||
我爱我家 为您找以下最适合的房源:
|
||||
|
||||
面积:20平米 价格:2500元 窗户:有 卫生间:独立卫生间 厨房:没有 地址:上地西里
|
||||
@@ -895,17 +595,8 @@ class Custom:
|
||||
面积:16平米 价格:1800元 窗户:有 卫生间:公用卫生间 厨房:没有 地址:当代城市家园
|
||||
|
||||
面积:18平米 价格:2600元 窗户:有 卫生间:独立卫生间 厨房:有 地址:金隅美和园
|
||||
|
||||
|
||||
|
||||
正在看房,寻找最合适的住巢……
|
||||
|
||||
|
||||
|
||||
Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租期 1 年。合同期内 Tony 有权对其进行使用!
|
||||
|
||||
|
||||
|
||||
</code></pre>
|
||||
|
||||
<h3>从剧情中思考中介模式</h3>
|
||||
@@ -1013,9 +704,6 @@ Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1023,9 +711,6 @@ Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
|
||||
|
||||
</div>
|
||||
@@ -1041,17 +726,11 @@ Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租
|
||||
<script>
|
||||
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
|
||||
|
||||
|
||||
function gtag() {
|
||||
|
||||
dataLayer.push(arguments);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-NPSEEVD756');
|
||||
@@ -1077,9 +756,6 @@ Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租
|
||||
setCookie("lastPath", path)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function setCookie(cname, cvalue) {
|
||||
|
||||
var d = new Date();
|
||||
@@ -1091,9 +767,6 @@ Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租
|
||||
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function getCookie(cname) {
|
||||
|
||||
var name = cname + "=";
|
||||
@@ -1111,12 +784,6 @@ Tony 与中介 我爱我家 签订 金隅美和园 的房子的租赁合同, 租
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user