对追MM设计模式系列中Facade模式的解释

xiaoxiao2024-02-02  99

看过 风雪涟漪兄写过一篇《外观模式(Facade Pattern) 追MM》的帖子, 一直很喜欢网上流行那篇 用追MM比喻设计模式的帖子, 只是一直没见过对应的代码实现, 看了风雪涟漪兄写的帖子很有创意,  但是觉得其中代码还是不够贴切, 在这里有写了一遍,欢迎大家都来投鸡蛋。

 

外观模式:

定义:它为子系统中的一组接口提供一个统一的高层接口。是的子系统更容易使用。

 

有一天女朋友想要去一个地方旅游。。旅游需要考虑很多很多的问题。如旅游的地点,航班,宾馆,饭店。这些事情做起来其实蛮复杂的,如果女朋友是一个怕麻烦的人, 那这些事情就应该我来做了。接下来我该怎么办呢?  下面我们先定义几个接口,再接着说。

 

interface Retaurant { FoodPojo supplyFood(); } interface Hotel{ RoomPojo supplyRoom(); } interface AirlineCompany{ Flight book(); } class FoodPojo {} class RoomPojo {} class Flight{}

 以上接口的对象是mm旅游所必须要预定的三个商业单位,它是具体是什么mm不想知道(漂亮女孩都这样),这三个对象能给mm提供她需要的航班,酒店房间,美食。  可是三个接口对mm来说还是复杂, 只要给她一个旅游计划就好了。

class TravelPlan{ Retaurant retaurant; Hotel hotal; AirlineCompany airlineCompany; public Retaurant getRetaurant() { return retaurant; } public Hotel getHotal() { return hotal; } public AirlineCompany getAirlineCompany() { return airlineCompany; } }

 

看来mm只需要得到一个旅游计划就能搞定一切了, 不过这个旅游计划从哪里来呢, 当然要去旅游公司找了

interface TravelCorporation{ TravelPlan buildPlan(); }

 

这时mm发话了,旅游公司我来挑, 我要中青旅!  领导发话照办~  于是我有了新的方法...............

 

class BoyFriend{ public TravelPlan I_want_to_travel(String TravelCorporationName){ //mm是领导,领导说找那家旅游公司就找那家旅游公司。 TravelCorporation tc=find(); //但是mm只要结果,给她一份旅游计划,相当与和旅游公司的合同。 return tc.buildPlan(); } private TravelCorporation find(){return //工程模式得到;} }

 

到这里,mm开始去旅游啦。

class GirlFriend{ BoyFriend bf; void travel(){ TravelPlan tp=bf.I_want_to_travel("中青旅"); //mm需要飞去玩的地方 AirlineCompany air=tp.getAirlineCompany(); Flight f=air.book(); //到达目的地了,mm找到旅馆 Hotel hotel=tp.getHotal(); //到了旅馆拿房间钥匙吧 RoomPojo room=hotel.supplyRoom(); //mm玩累了,要吃饭了,饭店伺候 Retaurant retaurant=tp.getRetaurant(); //mm点菜,要吃的了 FoodPojo food=retaurant.supplyFood(); } }

 

有吃有玩有住,mm很满意, 不用操心,只是对男朋友说了句话得到一个旅游合同就搞定一下了,mm好喜欢会Facade模式的gg。

 

于是mm也改了自己的类,表达了对gg的感情。

class GirlFriend(){ private BoyFriend bf GirlFriend(){ bf=new MyLover(); } }

 

 o(∩_∩)o...

转载请注明原文地址: https://www.6miu.com/read-5013986.html

最新回复(0)