รูปแบบการออกแบบสำหรับการแปลงวัตถุ (java)


21

ฉันไม่ได้ใช้รูปแบบการออกแบบบ่อยครั้งนอกเหนือจากโรงงานเป็นครั้งคราวและ MVC และฉันต้องการเริ่มใช้พวกเขามากขึ้น

ฉันมีกรณีที่เป็นรูปธรรมที่ฉันต้องการความเห็นของคุณเกี่ยวกับการใช้รูปแบบการออกแบบในกรณีนี้

ในแอปพลิเคชันของฉันฉันต้องแปลงวัตถุบ่อยครั้งในสถานการณ์ที่แตกต่างกัน ฉันอาจต้องแปลง PONO ของ Hibernate เป็น DTO เนื่องจากฉันใช้ GWT และ Hibernate POJO นั้นไม่สามารถต่อเนื่องได้และไม่สามารถส่งข้ามสายได้

ในสถานการณ์อื่นฉันอาจต้องแปลงวัตถุ Java เป็น SolrInputDocument เพื่อสร้างดัชนีโดย Solr

ฉันต้องการทราบว่าฉันควรใช้รูปแบบการออกแบบสำหรับสิ่งนี้หรือไม่ ดูเหมือนว่า "การแปลงวัตถุ" เป็นงานทั่วไปที่สามารถจัดการในรูปแบบที่มีความยืดหยุ่น / เป็นนามธรรมโดยรูปแบบ แต่ฉันไม่เห็นวิธีจริงๆ

หากไม่มีรูปแบบฉันจะสร้างคลาสแยกต่างหากสำหรับการแปลงแต่ละประเภทตัวอย่างเช่น CourseToSolrInputDocument (หลักสูตรเป็นเอนทิตีไฮเบอร์เนตในแอปพลิเคชันของฉัน) หรือ CourseToCourseDTO แต่ละคลาสการแปลงเหล่านี้อาจมีวิธีสแตติกเดียวที่เรียกconvert()ว่าใช้วัตถุต้นทางเป็นอินพุตและส่งคืนวัตถุเอาต์พุต

แต่นั่นไม่ใช่รูปแบบจริงๆใช่ไหม? ดังนั้นฉันจึงเริ่มทำบางสิ่งกับยาชื่อสามัญและสร้างคลาสนี้ที่ใช้ส่วนต่อประสานตัวแปลง แต่อย่างใดรู้สึกโง่ tgo สร้างอินเทอร์เฟซทั่วไปและฉันไม่เห็นประโยชน์นอกเหนือจากความสามารถในการแสดงความยินดีกับการใช้ generics

public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument>         {
    @Override
    public void convert(Course source, SolrInputDocument destination) {
        //To change body of implemented methods use File | Settings | File Templates.
    }
}

ดังนั้นคำถามจริงที่นี่คือ: มีรูปแบบที่ใช้กับการแปลงวัตถุทั่วไปและสิ่งที่จะเป็นวิธีการของคุณและสิ่งที่ได้เปรียบกว่าการใช้เพียงวิธีการเรียนแบบต่อการแปลง?


รูปแบบเป็นชื่อเพิ่มเติมสำหรับสิ่งที่คุณทำ (และตัวอย่างวิธีทำอย่างถูกต้อง) มากกว่าสิ่งที่น่าใช้ ดังนั้นคำถามที่ดีกว่าฉันจะใช้รูปแบบมากขึ้นได้อย่างไร: ฉันใช้ patters ใด (อาจเป็นวิธีที่ไม่สมบูรณ์ / ซับซ้อน)
user470365

คำตอบ:


18

แบบแปลคือสิ่งที่คุณขอ

แต่ฉันสงสัยว่าสิ่งที่คุณกำลังมองหาคือกรอบมากกว่ารูปแบบ ฉันเชื่อว่าDozerเป็นที่นิยมในโลก Java


ฉันรู้จัก Dozer และ Apache Beanutils ฉันต้องการใช้หนึ่งในนั้นใน "โครงสร้างการแปลง" ของฉัน ฉันขณะที่ฉันพบว่าฤดูใบไม้ผลิเสนอโซลูชั่นสำหรับการแปลงวัตถุที่สามารถพบได้ที่นี่: static.springsource.org/spring/docs/3.0.0.RC3/reference/html/... ฉันเคยเห็นมาก่อน แต่เมื่อนานมาแล้วดังนั้นอินเทอร์เฟซของฉันเองก็เป็นไปตามสิ่งที่ฉันจำได้จากสปริง ฉันจะไปกับทางแก้ปัญหาฤดูใบไม้ผลิเพราะฤดูใบไม้ผลิอยู่ในโครงการของฉันแล้วและดูเหมือนว่าวิธีการที่ดี
Julius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.