人处理的信息量有限,在面对复杂庞大的系统时,我们需要采用分而治之的方法。在软件设计领域内,出现了风靡一时的面向对象,它的前身可以说是模块划分。将系统分成一块块的似乎非常自然。但现在又出现了AOP的思想,它从另外一个角度划分子系统。这点倒和中医的思想有相似之处。
一、AOP基本思想这里介绍一本书"Aspect-Oriented Software Development with Use Cases"——《基于用例的面向方面软件开发》,对AOP的思想做了详细的分析。这里借用它里面的例子说明AOP的思想和OO的思想有什么不同。
拿酒店的例子来说,有三个用例:预定房间、登记入住、结帐离店。首先采用OO的思想分析出如下三个类:Room,Reservation,Payment。
对于用例“预定房间”,我们需要调用Room.checkAvailability,Reservation.create。
对于用例“登记入住”,我们需要调用Room.assignCustomer,Reservation.consume,Payment.createBill。
对于用例“结帐离店”,我们需要调用Room.removeCustomer,Payment.payBill。
采用OO的思想,可以将房间相关的信息封装到Room类中;将预定相关的信息封装到Reservation类中;将帐单相关的信息封装到 Payment类中。但这就存在一个问题,如果我们需要了解“登记入住”的情况,那么我们需要同时关注以上的所有类,也就是说OO的方式并不能将关注点分离在一定范围之类。
如果采用AOP的思想,我们将所有和“登记入住”方面的信息聚合起来。如下的AspectJ代码所示:
public aspect CheckInCustomer {
public void Room.assignCustomer()
{ // 客户入住
}
public void Reservation.consume()
{ // 删除预定信息
}
public void Payment.createBill()
{ // 生成帐单
}
}
这样在我们关注“登记入住”时,可以将关注点集中在CheckInCustomer方面中。可以看到aspect与class是从两个维度来分析系统的。
二、划分子系统的两个维度对比OO与AOP的思想,可以发现OO是纵向地切割系统,将系统划分成一个个的模块。AOP则是横向地观察系统,将不同模块中有关联的地方联系起来。这样我们在划分子系统的时候就有了OO与AOP这两个纬度。
OO是从早期的模块划分演化过来的,可以有效降低系统的复杂度,提高模块的复用性。但OO却有自身天然形成的局限性:无法有效地处理横切关注点。
AOP正是为了克服上面所说的问题创建的。这里我们不能简单地将AOP理解为单纯的技术手段,而应该像OO一样认为它是一种思想。AOP的核心就在于横切关注点。
通过融合OO与AOP的思想,能更加全面地了解这个系统的结构。
三、中医的角度中医将人体分为金木水火土五大子系统,但这个子系统划分不是OO的思想,而是和AOP的思想有些类似。
火 刘氏中医世家门诊刘医师始终本着:做药就是做人,良材良心做良药的理念治疗各科疾病。擅长治疗中医内科,妇科,疑难杂病。 对男科不育(精子成活率低、活力差、密度小、精液不液化)、前列腺炎、精索静脉曲张、阳痿、早泄、妇科不孕、月经不调、卵巢囊肿、习惯性流产、孕后无胎心搏动、乳腺增生、盆腔积液、过敏性紫癜、再生障碍性贫血、脑血栓、慢性肠炎、鼻炎、心肌炎、肾炎、风湿病、骨质增生、颈椎病、白塞氏病的治疗有多年的治疗和独到之处。治疗方法:根据患者提供的详细病情、病因、症状、发病时间及以往病史和检查结果,采用中医辩证,西医辨病,结合祖传经验方剂,辩证施治,灵活运用,随症加减。临床取得了理想的疗效..使求医的患者少走弯路,早日康复。
上一篇:哪些中药可以泡茶喝
下一篇:从喝中药预防感冒险些送命谈起
客 服 QQ: 382226917 有问题直接点击QQ咨询(注明:XX疾病)
咨询电话:13963322252
电子邮箱:382226917@qq.com
详情请陆: http://www.liushizhongyi.com
地址:山东省日照市莒县潍徐路314号(长途汽车站十字路口南200米路西,中医世家门诊)
站内所有文章由刘氏中医世家整理并发布,涉及到的版权问题属原作者所有。如发现有侵权现象,请与站长联系, 将在3个工作日内做出相应的处理并答复。网站信息不能作为诊断及医疗依据就医请遵照医生诊断。