适配器模式
Last updated
package classadapter
import "fmt"
type Adaptee struct {
}
func (Adaptee) adapteeRequest() {
fmt.Println("被适配者的方法")
}package classadapter
import "fmt"
type Target interface {
request()
}
type ConcreteTarget struct {
}
func (ConcreteTarget) request() {
fmt.Println("concreteTarget目标方法")
}package classadapter
type Adapter struct {
Adaptee
}
func (a Adapter) request() {
a.adapteeRequest()
}package classadapter
import "testing"
func Test(t *testing.T) {
var target Target = ConcreteTarget{}
target.request()
var adapterTarget Target = Adapter{}
adapterTarget.request()
}package objectadapter
import "fmt"
type Adaptee struct {
}
func (Adaptee) adapteeRequest() {
fmt.Println("被适配者的方法")
}package objectadapter
import "fmt"
type Target interface {
request()
}
type ConcreteTarget struct {
}
func (ConcreteTarget) request() {
fmt.Println("concreteTarget目标方法")
}package objectadapter
type Adapter struct {
adaptee Adaptee
}
func (a Adapter) request() {
a.adaptee.adapteeRequest()
}package objectadapter
import "testing"
func Test(t *testing.T) {
var target Target = ConcreteTarget{}
target.request()
var adapterTarget Target = Adapter{}
adapterTarget.request()
}package tech.selinux.design.pattern.structural.adapter.classadapter;
public class Adaptee {
public void adapteeRequest() {
System.out.println("被适配者的方法");
}
}package tech.selinux.design.pattern.structural.adapter.classadapter;
public interface Target {
void request();
}package tech.selinux.design.pattern.structural.adapter.classadapter;
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("concreteTarget目标方法");
}
}package tech.selinux.design.pattern.structural.adapter.classadapter;
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
// ...
super.adapteeRequest();
// ...
}
}package tech.selinux.design.pattern.structural.adapter.classadapter;
public class Test {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
Target adapterTarget = new Adapter();
adapterTarget.request();
}
}package tech.selinux.design.pattern.structural.adapter.objectadapter;
public class Adaptee {
public void adapteeRequest() {
System.out.println("被适配者的方法");
}
}package tech.selinux.design.pattern.structural.adapter.objectadapter;
public interface Target {
void request();
}package tech.selinux.design.pattern.structural.adapter.objectadapter;
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("concreteTarget目标方法");
}
}package tech.selinux.design.pattern.structural.adapter.objectadapter;
public class Adapter implements Target {
private Adaptee adaptee = new Adaptee();
@Override
public void request() {
// ...
adaptee.adapteeRequest();
// ...
}
}package tech.selinux.design.pattern.structural.adapter.objectadapter;
public class Test {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
Target adapterTarget = new Adapter();
adapterTarget.request();
}
}