旅游网站建设价格建设网站有哪些目的是什么意思
旅游网站建设价格,建设网站有哪些目的是什么意思,邢台建设企业网站价格,长沙网页设计培训服务好长沙大计校区设计模式--行为型--中介者模式 中介者模式定义结构案例实现优缺点使用场景 中介者模式
定义
又叫调停模式#xff0c;定义一个中介角色来封装一系列对象之间的交互#xff0c;使原有对象之间的耦合松散#xff0c;且可以独立的改变它们之间的交互。
结构
抽象中介者角色… 设计模式--行为型--中介者模式 中介者模式定义结构案例实现优缺点使用场景 中介者模式
定义
又叫调停模式定义一个中介角色来封装一系列对象之间的交互使原有对象之间的耦合松散且可以独立的改变它们之间的交互。
结构
抽象中介者角色Mediator它是中介者的接口提供了同事对象注册于转发同事对象信息的方法。具体中介者ConcreteMediator角色实现中介者接口定义一个List来管理同事对象协调各个同事之间的交互关系因此它依赖于同事角色。抽象同事类Colleague角色定义同事接口保存中介者对象提供同事对象交互的抽象方法实现所有相互影响的同事类的公共功能。具体同事类Concrete Colleague角色是抽象同事类的实现者当需要与其他同事对象交互时有中介者对象负责后续的交互。
案例实现
租房房主将房屋托管给中介而租房者从房屋中介获取房屋信息。房屋中介充当租房者与房屋所有者之间的中介者。 类图如下
/*** 抽象中介者类*/
public abstract class Mediator {public abstract void constact(String message,Person person);
}/*** 具体的中介者*/
public class MediatorStructure extends Mediator{// 聚合房主和租房者对象private HouseOwner houseOwner;private Tenant tenant;public HouseOwner getHouseOwner() {return houseOwner;}public void setHouseOwner(HouseOwner houseOwner) {this.houseOwner houseOwner;}public Tenant getTenant() {return tenant;}public void setTenant(Tenant tenant) {this.tenant tenant;}Overridepublic void constact(String message, Person person) {if (person houseOwner){tenant.getMessage(message);} else {houseOwner.getMessage(message);}}
}/*** 抽象同事类*/
public abstract class Person {protected String name;protected Mediator mediator;public Person(String name, Mediator mediator) {this.name name;this.mediator mediator;}
}/*** 具体同事类*/
public class Tenant extends Person {public Tenant(String name, Mediator mediator) {super(name, mediator);}// 和中介沟通的方法public void constact(String message) {mediator.constact(message, this);}// 获取信息的方法public void getMessage(String message) {System.out.println(租房者 name 获取到的信息是 message);}
}/*** 房主类*/
public class HouseOwner extends Person{public HouseOwner(String name, Mediator mediator) {super(name, mediator);}// 和中介沟通的方法public void constact(String message) {mediator.constact(message, this);}// 获取信息的方法public void getMessage(String message) {System.out.println(房主 name 获取到的信息是 message);}
}public class Test01 {public static void main(String[] args) {// 创建中介者对象MediatorStructure mediatorStructure new MediatorStructure();// 创建租房者对象Tenant tenant new Tenant(张三, mediatorStructure);// 创建房主对象HouseOwner houseOwner new HouseOwner(李四, mediatorStructure);// 中介要知道具体的房主和租客mediatorStructure.setTenant(tenant);mediatorStructure.setHouseOwner(houseOwner);// 租客和房主都是通过中介来获取的信息、并进行沟通tenant.constact(我想租一个两室一厅);houseOwner.constact(2500一个月年租2万5);}
}优缺点
优点 松散耦合中介者通过把多个同事对象之间的交互封装到中介者对象里面从而使得同事对象之间松散耦合基本上可以做到互补依赖。这样同事对象就可以独立的变化和复用。集中控制交互多个同事对象的交互被封装在中介者对象里面集中管理使得这些交互行为发生变化的时候只需要修改中介者对象就可以了当然如果是已经做好的系统那么就扩展中介者对象而各个同事类不需要修改。一对多关联转变为一对一关联没有使用中介者模式时同事对象之间的关系通常是一对多的引入中介者对象之后中介者对象和同事对象的关系通常变成双向的一对一这会让对象的关系更容易理解和实现。 缺点 当同事类太多时中介者的职责将很大它会变得复杂庞大以至于难以维护
使用场景
当系统中对象之间复杂的引用关系系统结构混乱且难以理解。当想创建一个运行于多个类之间的对象又不想生成新的子类时。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87164.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!