当先锋百科网

首页 1 2 3 4 5 6 7

Java装饰品器模式和代理模式都是常见的设计模式,这两种模式都可以增强对象的功能。

Java装饰品器模式

public interface Component {
void operation();
}
public class ConcreteComponent implements Component {
@Override
public void operation() {
System.out.println("执行操作");
}
}
public class Decorator implements Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operation() {
component.operation();
}
}
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
@Override
public void operation() {
super.operation();
System.out.println("增强功能");
}
}
public class Client {
public static void main(String[] args) {
Component component = new ConcreteComponent();
component = new ConcreteDecorator(component);
component.operation();
}
}

在这段代码中,Component是基础接口,ConcreteComponent是基础接口的实现类。在Decorator中,也实现了Component接口。ConcreteDecorator继承了Decorator,并且增强了功能。 最终在客户端中,先创建基础对象,然后使用装饰品器模式,增强对象的功能。

Java代理模式

public interface Subject {
void request();
}
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("执行操作");
}
}
public class Proxy implements Subject {
private Subject subject;
public Proxy(Subject subject) {
this.subject = subject;
}
@Override
public void request() {
System.out.println("执行前操作");
subject.request();
System.out.println("执行后操作");
}
}
public class Client {
public static void main(String[] args) {
Subject subject = new RealSubject();
subject = new Proxy(subject);
subject.request();
}
}

在这段代码中,Subject是接口,RealSubject是接口的实现类。Proxy实现了Subject接口,并且持有一个Subject实例。 在Proxy中,实现了增强Subject的功能。 最终在客户端中,先创建基础对象,然后使用代理模式,增强对象的功能。