Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan seni bina heksagon menggunakan Java?

Bagaimana untuk melaksanakan seni bina heksagon menggunakan Java?

WBOY
WBOYke hadapan
2023-04-23 13:25:071359semak imbas

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam