设计模式结构图java
时间: 2023-11-06 07:05:37 浏览: 62
Java结构型设计模式是一种用于解决软件设计中常见问题的方法,它包括23种不同的设计模式,分为三种类型:创建型、结构型和行为型。其中,结构型设计模式主要用于描述如何将类或对象组合成更大的结构,以满足特定的功能需求。下面是一些常见的Java结构型设计模式:
1.适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
2.桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
3.装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。
4.外观模式(Facade Pattern):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
5.享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象。
6.代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。
相关问题
java 结构型设计模式
以下是几种常见的Java结构型设计模式:
1. 适配器模式(Adapter Pattern):适配器模式用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的类能够合作。例如,将一个已有的类的接口转换成另一个接口,以满足客户端的需求。
```java
public interface MediaPlayer {
public void play(String audioType, String fileName);
}
public interface AdvancedMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
public class VlcPlayer implements AdvancedMediaPlayer {
public void playVlc(String fileName) {
System.out.println("Playing vlc file. Name: " + fileName);
}
public void playMp4(String fileName) {
// do nothing
}
}
public class Mp4Player implements AdvancedMediaPlayer {
public void playVlc(String fileName) {
// do nothing
}
public void playMp4(String fileName) {
System.out.println("Playing mp4 file. Name: " + fileName);
}
}
public class MediaAdapter implements MediaPlayer {
AdvancedMediaPlayer advancedMusicPlayer;
public MediaAdapter(String audioType) {
if (audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer = new VlcPlayer();
} else if (audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer = new Mp4Player();
}
}
public void play(String audioType, String fileName) {
if (audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer.playVlc(fileName);
} else if (audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer.playMp4(fileName);
}
}
}
public class AudioPlayer implements MediaPlayer {
MediaAdapter mediaAdapter;
public void play(String audioType, String fileName) {
if (audioType.equalsIgnoreCase("mp3")) {
System.out.println("Playing mp3 file. Name: " + fileName);
} else if (audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")) {
mediaAdapter = new MediaAdapter(audioType);
mediaAdapter.play(audioType, fileName);
} else {
System.out.println("Invalid media. " + audioType + " format not supported");
}
}
}
public class Main {
public static void main(String[] args) {
AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.play("mp3", "beyond the horizon.mp3");
audioPlayer.play("mp4", "alone.mp4");
audioPlayer.play("vlc", "far far away.vlc");
audioPlayer.play("avi", "mind me.avi");
}
}
```
java图形界面设计模式
Java图形界面设计模式是一种用于创建和管理图形用户界面(GUI)的软件设计模式。它提供了一种结构化的方法来组织和管理GUI组件,以及处理用户交互和事件。
以下是一种常见的Java图形界面设计模式 - MVC(Model-View-Controller)模式的示例:
```java
// Model(模型) - 用于存储和处理数据
public class Student {
private String name;
private int age;
// 省略构造函数和其他方法
// Getter和Setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
// View(视图) - 用于显示和呈现数据
public class StudentView {
public void displayStudentDetails(String name, int age) {
System.out.println("Student Details:");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
// Controller(控制器) - 用于处理用户交互和事件
public class StudentController {
private Student model;
private StudentView view;
public StudentController(Student model, StudentView view) {
this.model = model;
this.view = view;
}
public void updateView() {
view.displayStudentDetails(model.getName(), model.getAge());
}
// 省略其他方法,例如处理用户输入和更新模型数据的方法
}
// 示例代码
public class Main {
public static void main(String[] args) {
// 创建模型、视图和控制器对象
Student model = new Student();
model.setName("John");
model.setAge(20);
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);
// 更新视图
controller.updateView();
}
}
```
这个示例中,MVC模式将应用程序分为三个部分:模型(存储和处理数据)、视图(显示和呈现数据)和控制器(处理用户交互和事件)。通过这种方式,可以实现GUI的分离和解耦,使代码更加可维护和可扩展。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)