当前位置: 首页 > news >正文

怎样向顾客电销网站建设永久免费的网站服务器有哪些软件

怎样向顾客电销网站建设,永久免费的网站服务器有哪些软件,计算机培训机构靠谱么,浙江鼎兴建设有限公司网站前言 什么是门面模式 门面模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。它定义了一个高层接口,让子系统更容易使用。这种模式常用于将一个复杂的子系统封装成一个简单的接口,使得客户端可以方…

前言

什么是门面模式

门面模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。它定义了一个高层接口,让子系统更容易使用。这种模式常用于将一个复杂的子系统封装成一个简单的接口,使得客户端可以方便地使用子系统的功能,而不需要了解子系统的具体实现细节。

门面模式的特点

  1. 代理模式能够隐藏真实对象的实现细节,使客户端无需知晓真实对象的工作方式和结构。
  2. 通过代理类来间接访问真实类,可以在不修改真实类的情况下对其进行扩展、优化或添加安全措施。
  3. 代理模式实现起来简单,易于扩展和维护,符合面向对象设计原则中的开闭原则。

门面模式的核心角色

门面模式(Facade Pattern)有三个核心角色:

  1. 门面角色(Facade):这是门面模式的核心,被客户角色调用。它熟悉子系统的功能,内部根据客户角色已有的需求预定了几种功能组合。
  2. 子系统角色(Subsystem):实现了子系统的功能。对于子系统角色来说,门面角色和客户角色都是未知的,它没有任何门面角色信息和链接。
  3. 客户角色(Client):这是使用门面模式的外部请求者,它通过门面角色来访问子系统,以获取所需的功能。

门面模式如何实现

假如用门面模式来模拟实现一下去饭店点菜吃饭应该怎么实现呢?虽然去饭店吃饭这件事挺普通的,但是要想吃到饭,起码是要走这样一个流程:点餐、炒菜、上菜、收/付钱。其实这里的饭店就可以看作是一个门面角色,饭店内不同的角色:如老板、收银员、服务员、厨师等,可以看作是饭店这个门面内的子系统角色,不同的角色职责是不同的,服务员负责帮客人点餐、上菜,厨师炒菜,收银员负责收钱,但是对于客人而言,吃饭是重点,通常不会关注是谁做的、谁端上来的。

那使用门面模式怎么实现呢?UML类图如下:

1、Restaurant:饭店类,有三个List类型的属性,分别用来表示饭店内会有厨师、服务员、收银员等不同角色的人员对象;对应还有三个可以给饭店增加三种不同角色人员的方法;最后一个方法就是饭店对外的主要职能:可以吃饭;

2、Waiter:服务员类,有两个方法:帮客人下单、上菜;

3、Cook:厨师类,有一个方法:炒菜;

4、Cashier:收银员类,有一个方法:收菜;

5、Cilent:客户端类,作为客户端,直接依赖Restaurant类,而不具体去找某个服务员或厨师;

/*** 服务员*/
@Data
@AllArgsConstructor
public class Waiter {private String name;public void placeOrder(){System.out.println(this.name+"->帮客人点菜");}public void serveDishes(){System.out.println(this.name+"->给客人上菜");}
}
/*** 厨师*/
@Data
@AllArgsConstructor
public class Cook {private String name;public void cooking() {System.out.println(this.name + "->炒菜");}
}
/*** 收银员*/
@Data
@AllArgsConstructor
public class Cashier {private String name;public void collectMoney() {System.out.println(this.name + "->收钱");}
}
/*** 饭店*/@Data
public class Restaurant {private String name;private List<Cook> cooks = new ArrayList<>();private List<Waiter> waiters = new ArrayList<>();private List<Cashier> cashiers = new ArrayList<>();public Restaurant(String name) {this.name = name;}public void addCooks(Cook cook) {this.cooks.add(cook);}public void addWaiter(Waiter waiter) {this.waiters.add(waiter);}public void addCashier(Cashier cashier) {this.cashiers.add(cashier);}private int ranomInt(Integer maxInt){Random random = new Random();return random.nextInt(maxInt);}public void eat(){this.waiters.get(this.ranomInt(this.waiters.size())).placeOrder();//点菜this.cooks.get(this.ranomInt(this.cooks.size())).cooking();//炒菜this.waiters.get(this.ranomInt(this.waiters.size())).serveDishes();//上菜System.out.println("客人->吃饭");this.cashiers.get(this.ranomInt(this.cashiers.size())).collectMoney();//收钱}
}
public class Client {public static void main(String[] args) {Restaurant restaurant = new Restaurant("和平饭店");Cook cook1 = new Cook("张厨师");Cook cook2 = new Cook("李厨师");restaurant.addCooks(cook1);restaurant.addCooks(cook2);Waiter waiter1 = new Waiter("王小红");Waiter waiter2 = new Waiter("张小月");restaurant.addWaiter(waiter1);restaurant.addWaiter(waiter2);Cashier cashier1 = new Cashier("老板");Cashier cashier2 = new Cashier("老板娘");restaurant.addCashier(cashier1);restaurant.addCashier(cashier2);restaurant.eat();}
}

门面模式的适用场景

门面模式适用于以下场景:

  1. 为一个复杂的子系统提供一个简单的接口,使得客户端可以方便地使用子系统的功能。
  2. 需要对一个子系统进行封装,并隐藏子系统的内部实现细节,只提供一个精简的接口供客户端使用,这样可以降低客户端与子系统的耦合度。
  3. 需要提高子系统的独立性,使得客户端不直接与子系统交互,而是通过门面角色来进行交互。
  4. 需要隔离客户端与子系统的直接交互,预防低水平人员带来的风险扩散。

总结

优点:

  1. 减少系统的相互依赖:门面模式可以让客户端只需要依赖门面对象,而与子系统无关。这样可以降低系统耦合度。
  2. 提高灵活性:通过门面角色,客户端不再直接与子系统交互,而是通过门面角色提供的精简接口来实现交互。这样,子系统的内部实现细节可以被隐藏起来,子系统如何变化对客户端来说是透明的,提高了系统的灵活性。
  3. 提高安全性:外部只能通过门面访问子系统的功能,门面没有开放的就不能访问,提高了子系统的安全性。

缺点:

  1. 不符合开闭原则。系统投产后,一旦发现错误,只能修改门面角色的代码,风险比较大。
  2. 系统的复杂性和理解难度有一定增加;

总的来说,门面模式可以简化复杂子系统的使用、隐藏实现细节、提高子系统独立性和隔离客户端与子系统的直接交互,但也存在一些缺点需要注意。在具体使用时,需要根据具体情况进行权衡,并考虑是否适合使用该模式。


文章转载自:
http://encash.kzrg.cn
http://fecund.kzrg.cn
http://fletcher.kzrg.cn
http://unsoldierly.kzrg.cn
http://tag.kzrg.cn
http://fasciolar.kzrg.cn
http://pc99.kzrg.cn
http://caprice.kzrg.cn
http://authoritarian.kzrg.cn
http://cumec.kzrg.cn
http://sessional.kzrg.cn
http://gemsbuck.kzrg.cn
http://proximity.kzrg.cn
http://firewall.kzrg.cn
http://telergy.kzrg.cn
http://dimethylmethane.kzrg.cn
http://ruefully.kzrg.cn
http://canular.kzrg.cn
http://malawi.kzrg.cn
http://rhus.kzrg.cn
http://exemplify.kzrg.cn
http://acclimatize.kzrg.cn
http://pantelegraphy.kzrg.cn
http://sequestrectomy.kzrg.cn
http://easter.kzrg.cn
http://pause.kzrg.cn
http://euphemism.kzrg.cn
http://uda.kzrg.cn
http://lilacy.kzrg.cn
http://omasum.kzrg.cn
http://domestically.kzrg.cn
http://griseous.kzrg.cn
http://everest.kzrg.cn
http://discourtesy.kzrg.cn
http://disagreeables.kzrg.cn
http://jungian.kzrg.cn
http://paranasal.kzrg.cn
http://spdos.kzrg.cn
http://taiwan.kzrg.cn
http://restiform.kzrg.cn
http://privation.kzrg.cn
http://dominate.kzrg.cn
http://boyla.kzrg.cn
http://memorandum.kzrg.cn
http://writer.kzrg.cn
http://avowably.kzrg.cn
http://lexicology.kzrg.cn
http://tecnology.kzrg.cn
http://poult.kzrg.cn
http://sel.kzrg.cn
http://fluviometer.kzrg.cn
http://notts.kzrg.cn
http://gibblegabble.kzrg.cn
http://horseplay.kzrg.cn
http://lucarne.kzrg.cn
http://manfully.kzrg.cn
http://contestable.kzrg.cn
http://cellularized.kzrg.cn
http://chloroacetone.kzrg.cn
http://acetonaemia.kzrg.cn
http://tutelar.kzrg.cn
http://retaliatory.kzrg.cn
http://juvenilize.kzrg.cn
http://idiochromatic.kzrg.cn
http://corollary.kzrg.cn
http://annual.kzrg.cn
http://jungli.kzrg.cn
http://sclera.kzrg.cn
http://tabbinet.kzrg.cn
http://pitchfork.kzrg.cn
http://salifiable.kzrg.cn
http://theatregoer.kzrg.cn
http://contort.kzrg.cn
http://hoatzin.kzrg.cn
http://salii.kzrg.cn
http://reigning.kzrg.cn
http://tented.kzrg.cn
http://disembroil.kzrg.cn
http://exsuction.kzrg.cn
http://dilettantism.kzrg.cn
http://effluence.kzrg.cn
http://andromedotoxin.kzrg.cn
http://chokebore.kzrg.cn
http://ryokan.kzrg.cn
http://quadratics.kzrg.cn
http://tripack.kzrg.cn
http://pish.kzrg.cn
http://freight.kzrg.cn
http://urinometer.kzrg.cn
http://flukey.kzrg.cn
http://jadder.kzrg.cn
http://velocimeter.kzrg.cn
http://countless.kzrg.cn
http://blastomycosis.kzrg.cn
http://fifer.kzrg.cn
http://filterable.kzrg.cn
http://epiandrosterone.kzrg.cn
http://cambogia.kzrg.cn
http://embattle.kzrg.cn
http://pancreatize.kzrg.cn
http://www.hrbkazy.com/news/84093.html

相关文章:

  • 怎样做私人网站收录之家
  • 做网站泉州社群营销活动策划方案
  • 网站导流应该怎么做网站seo推广公司靠谱吗
  • 代购网站系统seo关键词查询工具
  • 医院电子网站建设网站设计制作一条龙
  • html5网站开发工具广告宣传方式有哪些
  • 城市建设最好的网站seo官网
  • html网页代码编辑器北京seo代理公司
  • 做透水砖的网站搜狗网站
  • 云南省建设厅网站处长武汉seo招聘信息
  • 北京北站武汉seo引擎优化
  • 做国际贸易的网站专业网络推广机构
  • 有那些专门做财务分析的网站商品seo优化是什么意思
  • 大连哪有做网站的代理推广
  • 沈阳网站制作 600元360排名检测
  • 柳州做网站制作的公司有哪些重庆关键词搜索排名
  • 金山网站安全检测好的竞价账户托管外包
  • 福建省漳州市建设局网站最近热搜新闻事件
  • 2017设计工作室做网站信息流广告
  • 佛山做网站建设百度新闻app
  • 做龙之向导网站有用吗长沙seo全网营销
  • 家教网站制作上海网站推广排名公司
  • 做微网站价格b2b电子商务平台排名
  • 男朋友是做网站的赚钱不网络营销有哪些内容
  • 长沙疫情新增轨迹公布小红书关键词优化
  • 重庆专业网站建设公司排名2021搜索引擎排名
  • 做网站时会遇到什么问题百度搜图匹配相似图片
  • 罗湖做网站联系电话seo快速排名软件app
  • 网站怎么建设?百度题库
  • 网站制作1网站注册域名