良许Linux教程网 干货合集 讲解一下Java设计模式之外观模式

讲解一下Java设计模式之外观模式

在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模式。

u=2930346621,2442264583&fm=26&gp=0

1.什么是外观模式

当一个用户类需要和某个系统中的多个子系统打交道时,为了避免该类和子系统中的类产生过多的依赖关系,可以采用外观模式。外观模式,为这些子系统提供一个外观类进行功能的封装,外观类负责和子系统中的类打交道,用户类和外观类打交道,简化了用户类和子系统进行交互和依赖。

2.如何实现

1)子系统,是若干个类的集合,这些类协同为用户提供所需的功能,子系统中的任何类都不包含外观类的引用

2)外观类(Facade),该类包含子系统中全部或部分类的实例引用。外观类可以替代子系统中的类和用户打打交道。

3.代码实现

以一个广告系统做案例,该系统包含CheckWord,Charge,TypeSeting三个子类。

AdFacade是这个子系的外观类,负责和用户类进行交互,并调用子系统中的功能实现用户需求。

1)子系统CheckWord

/**
* 子系统1
* 广告检查系统
* 完成广告字数计算
*/
public class CheckWord {
   int amount;
   String ad;
   public CheckWord (String ad){
       this.ad = ad;
   }
   /**
    * 计算广告字数,按字数收费
    * @return
    */
   public int setAmout( ){
       System.out.println("计算广告字数");
       amount = ad.length();
       return amount;
   }
}

2)Charge

/**
* 子系统2
* 计算广告价格
*/
public class Charge {
   CheckWord word;
   public int price;
   public Charge(CheckWord word){
       this.word = word;
   }
   public int giveCharge( ){
       //计算广告价格
       System.out.println("计算价格");
       price = word.amount*100;
       return price;
   }
}

3)TypeSetting

/**
* 子系统3
* 广告排版
*/
public class TypeSetting {
   private String ad;
   public TypeSetting(String ad){
       this.ad = ad;
   }
   public void typeSetting(){
       System.out.println("广告排版");
   }
}

4)外观类

/**
* 外观类
* 包含子系统中全部或部分类。
* 这个类替代子系统和用户类打交道,
* 所有用户想要完成的功能由这个类进行调用,
* 避免了用户类和子系统过多的依赖。
*/
public class AdFacade {
   private CheckWord checkWord;
   private Charge charge;
   private TypeSetting typeSetting;
   public AdFacade(String ad){
       this.checkWord = new CheckWord(ad);
       this.charge = new Charge(checkWord);
       this.typeSetting = new TypeSetting(ad);
   }
   /**
    * 完成用户发布广告的任务
    */
   public void finishAdTask(){
       checkWord.setAmout();
       charge.giveCharge();
       typeSetting.typeSetting();
   }
}

5)测试类

public class Main {
   public static void main(String args[]){
       String ad ="hello world";
       AdFacade adFacade = new AdFacade(ad);
       adFacade.finishAdTask();
   }
}
public class Main {
   public static void main(String args[]){
       String ad ="hello world";
       AdFacade adFacade = new AdFacade(ad);
       adFacade.finishAdTask();
   }
}

到此这篇关于Java设计模式之外观模式示例详解的文章就介绍到这了

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部