美文网首页
设计模式——外观模式

设计模式——外观模式

作者: DevilRoshan | 来源:发表于2020-10-28 21:32 被阅读0次

什么是外观模式

提供一个统一的接口,用来访问子系统中的一群接口,提供一个高层接口让子系统更容易使用。

实现

type Stock struct {
}

func NewStock() *Stock {
   return &Stock{}
}

func (this *Stock) Buy() {
   fmt.Println("Buy Stock...")
}

func (this *Stock) Sell() {
   fmt.Println("Sell Stock...")
}

type NationalDebt struct {
}

func NewNationalDebt() *NationalDebt {
   return &NationalDebt{}
}

func (this *NationalDebt) Buy() {
   fmt.Println("Buy NationalDebt...")
}

func (this *NationalDebt) Sell() {
   fmt.Println("Sell NationalDebt...")
}

type Realty struct {
}

func NewRealty() *Realty {
   return &Realty{}
}

func (this *Realty) Buy() {
   fmt.Println("Buy Realty...")
}

func (this *Realty) Sell() {
   fmt.Println("Sell Realty...")
}

type Fund struct {
   stock        Stock
   nationalDebt NationalDebt
   realty       Realty
}

func NewFund() *Fund {
   return &Fund{
      stock:        Stock{},
      nationalDebt: NationalDebt{},
      realty:       Realty{},
   }
}

func (this *Fund) BuyFund() {
   this.stock.Buy()
   this.nationalDebt.Buy()
   this.realty.Buy()
}

func (this *Fund) SellFund() {
   this.stock.Sell()
   this.nationalDebt.Sell()
   this.realty.Sell()
}
func TestFund_BuyFund(t *testing.T) {
   fund := NewFund()
   fund.BuyFund()
   fmt.Println("-----------------------分隔符----------------------")
   fund.SellFund()
}
// === RUN   TestFund_BuyFund
// Buy Stock...
// Buy NationalDebt...
// Buy Realty...
// -----------------------分隔符----------------------
// Sell Stock...
// Sell NationalDebt...
// Sell Realty...
// --- PASS: TestFund_BuyFund (0.00s)
// PASS

优点

  • 实现了子系统与客户端之间的松耦合关系;
  • 客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。

缺点

  • 不符合开闭原则,如果要修改某一个子系统的功能,通常外观类也要一起修改;
  • 没有办法直接阻止外部不通过外观类访问子系统的功能,因为子系统类中的功能必须是公开的。

使用场景

  • 设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式;
  • 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口;
  • 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。

相关文章

  • Android设计模式——外观模式(七大结构型)

    1.外观模式介绍 外观模式(Facade Pattern),是七大结构型设计模式之一。 外观模式运...

  • 设计模式[9]-外观模式-Facade Pattern

    1. 外观模式 外观模式(Facade Pattern),又称为门面模式,是非常常用的结构性设计模式。外观模式使得...

  • java设计模式-外观模式(Facade)

    外观模式,属于结构性模式。属于设计模式里面比较简单的设计模式,本人认为是最简单的设计模式。 所谓外观,就是我们能看...

  • 了解外观模式

    java 设计模式 ------外观模式 Java中一共有23种设计模式,每种设计模式各有特...

  • 设计模式之-4.外观模式

    每看一次设计模式,感觉每一个设计模式看起来是那么简单,对于外观模式我的理解就是外观模式:外观模式,这个名字起得不怎...

  • 设计模式详解——外观模式

    本篇文章介绍一种设计模式——外观模式。本篇文章内容参考《JAVA与模式》之门面模式,外观模式,深入浅出外观模式(二...

  • 外观模式(Facede)

    本文参考自: 《JAVA设计模式》之外观模式(Facade) 1. 作用 外观模式也叫门面模式,门面模式是对象的结...

  • 设计模式---外观模式

    1、外观模式(Facade):也叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个...

  • 设计模式——外观模式

    阎宏博士的《JAVA与模式》一书中开头是这样描述外观(Facade)模式的:门面模式是对象的结构模式,外部与一个子...

  • 设计模式--外观模式

    一、举个栗子小明每天回家都会先打开灯,空气净化器,电热水器烧上水,放上音乐,如果天气热的话,再打开空调。写成代码 ...

网友评论

      本文标题:设计模式——外观模式

      本文链接:https://www.haomeiwen.com/subject/vojamktx.html