桥接模式VS代理模式

桥接模式与代理模式区别如下:

桥接模式(Bridge Pattern)是指将抽象和实现解耦,让它们可以独立变化。一个类存在两个(或多个)独立变化的维度,通过组合的方式,让这两个(或多个)维度可以独立进行扩展。
代理模式(Proxy Pattern)是指用一个代理对象来代替对真实对象的引用。主要用来控制对一个对象的访问,同时又能保证安全。

桥接模式示例:

public interface Shape {
    void draw();
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing Circle...");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing Rectangle...");
    }
}

public class ShapeBridge implements Shape {
    private int type; // 类型,1表示圆形,2表示矩形
    public ShapeBridge(int type) {
        this.type = type;
    }
    @Override
    public void draw() {
        if(type == 1) {
            Circle circle = new Circle();
            circle.draw();
        } else if(type == 2) {
            Rectangle rectangle = new Rectangle();
            rectangle.draw();
        } else {
            System.out.println("Invalid type!");
        }
    }
}

在上述代码中,Shape是一个接口,Circle和Rectangle是实现了Shape接口的具体类,它们分别代表圆形和矩形。ShapeBridge是一个桥接类,它也实现了Shape接口,并通过type属性来区分是圆形还是矩形,在draw()方法中根据type属性的值创建对应的圆形或矩形对象,并调用它们的draw()方法进行绘制。这样,通过桥接模式,我们可以很方便地扩展出更多的形状对象。

代理模式示例:

public interface IUserService {
    void login();
}

public class UserService implements IUserService {
    @Override
    public void login() {
        System.out.println("Logging in...");
    }
}

public class UserServiceProxy implements IUserService {
    private IUserService userService;
    public UserServiceProxy(IUserService userService) {
        this.userService = userService;
    }
    @Override
    public void login() {
        System.out.println("Checking credentials..."); // 进行一些前置处理,例如验证用户信息等。
        userService.login(); // 调用真实的服务对象的方法进行登录。
    }
}

在上述代码中,IUserService是一个接口,UserService是实现了IUserService接口的具体类,它代表一个真实的用户服务对象。UserServiceProxy是一个代理类,它也实现了IUserService接口,并在login()方法中进行一些前置处理(例如验证用户信息等),然后调用真实的服务对象的login()方法进行登录。通过代理模式,我们可以在调用真实的服务对象之前加入一些额外的逻辑处理,从而增强系统的灵活性和可维护性。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容