(十)JAVA设计模式23种设计模式之外观模式实例demo

我们都知道类与类之间的耦合越低,那么可复用性就越好,如果两个类不必彼此通信,那么就不要让这两个类发生直接的相互关系,如果需要调用里面的方法,可以通过第三者来转发调用。外观模式非常好的诠释了这段话。外观模式提供了一个统一的接口,用来访问子系统中的一群接口。它让一个应用程序中子系统间的相互依赖关系减少到了最少,它给子系统提供了一个简单、单一的屏障,客户通过这个屏障来与子系统进行通信。通过使用外观模式,使得客户对子系统的引用变得简单了,实现了客户与子系统之间的松耦合。但是它违背了“开闭原则”,因为增加新的子系统可能需要修改外观类或客户端的源代码。 

 

demo


 入口类

package facade_method_mod;

import org.junit.Test;

/**
 * 我们都知道类与类之间的耦合越低,那么可复用性就越好,如果两个类不必彼此通信,那么就不要让这两个类发生直接的相互关系,如果需要调用里面的方法,可以通过第三者来转发调用。外观模式非常好的诠释了这段话。外观模式提供了一个统一的接口,用来访问子系统中的一群接口。它让一个应用程序中子系统间的相互依赖关系减少到了最少,它给子系统提供了一个简单、单一的屏障,客户通过这个屏障来与子系统进行通信。通过使用外观模式,使得客户对子系统的引用变得简单了,实现了客户与子系统之间的松耦合。但是它违背了“开闭原则”,因为增加新的子系统可能需要修改外观类或客户端的源代码。
 */
public class Client {
    @Test
    public void test(){
        AnimalFacade animalFacade = new AnimalFacade();
        animalFacade.catSay();
        animalFacade.dogSay();
    }
}

外观角色 

package facade_method_mod;

/**
 * Facade: 外观角色
 */
public class AnimalFacade {
    private Cat cat;
    private Dog dog;
    public AnimalFacade(){
        this.cat = new Cat();
        this.dog = new Dog();
    }

    public void catSay(){
        cat.say();
    }

    public void dogSay(){
        dog.say();
    }


}

接口  动物

package facade_method_mod;

public interface Animal {
    public void say();
}

接口实现类 猫 

package facade_method_mod;

public class Cat implements Animal {
    @Override
    public void say() {
        System.out.println("cat say 喵喵~");
    }
}

接口实现类狗 

package facade_method_mod;

/**
 * SubSystem:子系统角色
 */
public class Dog implements Animal {
    @Override
    public void say() {
        System.out.println("Dog say 旺旺~");
    }
}

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值