Seni bina heksagon ialah gaya reka bentuk yang menggunakan lapisan untuk mengasingkan logik teras daripada objek luaran. Logik terasnya ialah modul perniagaan, dan elemen luaran ialah titik integrasi, seperti pangkalan data, API luaran, antara muka, dsb. Ia membahagikan perisian kepada bahagian dalaman dan luaran Bahagian dalaman mengandungi logik perniagaan teras dan lapisan domain (yang dipanggil seni bina berlapis), dan bahagian luaran mengandungi antara muka, pangkalan data, pemesejan dan kandungan lain. Dalaman dan luaran berkomunikasi antara satu sama lain melalui port dan penyesuai.
*Nota Terjemahan: Seni Bina Heksagon telah dicadangkan oleh Alistair Cockburn untuk menyelesaikan masalah yang disebabkan oleh seni bina berlapis tradisional. *
1. Kelebihan
Perisian yang dibangunkan menggunakan seni bina heksagon adalah bebas daripada saluran dan oleh itu boleh menyokong berbilang saluran
Mudah untuk menggantikan titik integrasi masuk dan keluar
Perisian ujian menjadi lebih mudah kerana titik integrasi boleh dipermainkan dengan mudah
2. Pelaksanaan Java
Seperti yang diterangkan di atas, seni bina heksagon berfungsi lebih kepada port dan penyesuai. Dalam Java, antara muka digunakan untuk menentukan port dan kelas pelaksanaan bertindak sebagai penyesuai. Mari gunakan contoh aplikasi Spring Boot yang mudah untuk memahami cara menggunakan seni bina heksagon.
Fungsi utama aplikasi sampel adalah untuk mencipta dan melihat maklumat pekerja Logik perniagaan teras dilaksanakan dalam EmployeeService Objek domain ini boleh dianggap sebagai modul dalaman.
**EmployeeService.java**
——java
@Perkhidmatan
Perkhidmatan Pekerja kelas awam {
@Autowired
swasta EmployeeRepositoryPort employeeRepository;
public void create(Nama rentetan, Peranan rentetan, gaji panjang){
employeeRepository.create(nama, peranan, gaji);
}
pandangan Pekerja awam(Integer userId){
return employeeRepository.getEmployee(userId);
}
}
——
**Pekerja.java**
——java
@Entiti
@Table(nama = "pekerja")
Pekerja kelas awam{
@Id
@GeneratedValue
@Column(name = "id")
id Integer peribadi;
@Column(name = "name", nullable = false)
nama Rentetan peribadi;
@Column(name = "role", nullable = false)
peranan Rentetan peribadi;
@Column(name = "gaji", nullable = false)
gaji panjang swasta;
//Setter, Kaedah Getter
}
Kini, aplikasi sampel boleh menyediakan perkhidmatan melalui REST atau mekanisme pemesejan. Buat kelas EmployeeControllerAdapter yang melaksanakan antara muka EmployeeUIPort untuk menyediakan perkhidmatan REST.
**EmployeeControllerAdapter.java**
——java
RestController
@RequestMapping("/pekerja/")
EmployeeControllerAdapter kelas awam melaksanakan EmployeeUIPort{
@Autowired
Perkhidmatan pekerjaPerkhidmatan Pekerja swasta;
@Batal
public void create(@RequestBody Employee request) {
employeeService.create(request.getName(), request.getRole(), request.getSalary());
}
@Batal
pandangan Pekerja awam (@PathVariable Integer id) {
Pekerja pekerja = employeeService.view(id);
pekerja balik;
}
}
——
——java
antara muka awam EmployeeUIPort {
@PostMapping("buat")
public void create(@RequestBody Permintaan Pekerja);
@GetMapping("view/{id}")
pandangan Pekerja awam(@PathVariable Integer userId);
}
Sebagai sebahagian daripada logik perniagaan, EmployeeService juga perlu memanggil titik integrasi DB luaran. Oleh itu, kami mencipta EmployeeRepositoryPort dan EmployeeServiceAdapter yang melaksanakan antara muka ini.
**EmployeeServiceAdapter.java**
——java
@Perkhidmatan
EmployeeServiceAdapter kelas awam melaksanakan EmployeeRepositoryPort {
@PersistenceContext
private EntityManager entityManager;
@Transaksional
@Override
public void create(String name, String role, long salary) {
Pekerja pekerja = Pekerja baharu();
pekerja.setName(nama);
pekerja.setRole(peranan);
pekerja.setGaji(gaji);
entityManager.persist(pekerja);
}
@Batal
Pekerja awam dapatkanPekerja(Id pengguna integer) {
kembali entityManager.find(Employee.class, userId);
}
}
——
**EmployeeRepositoryPort.java**
——java
antara muka awam EmployeeRepositoryPort {
void create(Nama rentetan, Peranan rentetan, gaji panjang);
Pekerja dapatkanEmployee(Integer userId);
}
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan seni bina heksagon menggunakan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!