Java设计模式之外观模式(属于结构型模式)

Java设计模式之外观模式

定义:外观模式也称为门面模式,属于结构型模式。外观模式通过定义一个一致性接口,用以屏蔽内部子系统的实现细节,使用端只需跟这个接口发生调用即可实现调用后台的效果。

通俗的讲,就是后台类实在太多,而你想要调用很多个后台类的一些方法,以前你要做的是,每个类都new 一个对象,然后调用这个对象的方法,如果new的对象太多,这显得十分的繁琐。现在使用外观模式,将创建很多个对象的过程放在里面,再向外提供这些对象的调用方法,这样,你就只需new 一个外观类,通过调用外观类的方法来间接的实现了对不同的其他类的方法调用。

简单例子:定义3个类,分别为圆(Circle),正方形(Square),三角形(Triangle)类,里面提供了画圆、画正方形、画三角形的方法。如果是以前,我们需要创建三个对象,然后分别对这三个对象进行方法调用,得到三个图形(当然,这里是为了举例说明外观模式,不要说为什么不把画图形的方法放在一个同一个图形类中)。

没有使用外观模式:

public interface Graph {
    void draw();
}
public class Circle implements Graph{
    @Override
    public void draw() {
        System.out.println("画了个圆");
    }
}
public class Square implements Graph{
    @Override
    public void draw() {
        System.out.println("画了个正方形");
    }
}
public class Triangle implements Graph{
    @Override
    public void draw() {
        System.out.println("画了个三角形");
    }
}

测试:

public class Test1 {
    public static void main(String[] args) {
        Circle cirCle = new Circle();
        cirCle.draw();
        
        Square square = new Square();
        square.draw();
        
        Triangle triangle = new Triangle();
        triangle.draw();
    }
}

运行结果:

在这里插入图片描述

使用外观模式

增加一个外观类:

public class Facade {
    private Circle circle;
    private Square square;
    private Triangle triangle;
    
    public Facade() {
        this.circle = new Circle();
        this.square = new Square();
        this.triangle = new Triangle();
    }
    
    public void DrawC() {
        circle.draw();
    }
    public void DrawS() {
        square.draw();
    }
    public void DrawT() {
        triangle.draw();
    }
}

测试类:

public class test2 {
    public static void main(String[] args) {
        Facade facade = new Facade();	//只需创建一个对象
        facade.DrawC();
        facade.DrawS();
        facade.DrawT();
    }
}

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值