วันอังคารที่ 31 มีนาคม พ.ศ. 2558

ว่าด้วยเรื่อง Spring Framework

วันนี้ไปอ่านเจอบทความ เขียนเกี่ยวกับเรื่อง Spring Framework อ่านแล้วเข้าใจดี เลยเอามาโพสไว้อ่าน นิดหนึ่ง บทความนี้เห็นโพสต์ในการตอบกระทู้ ซึ่งตอบโดยคุณ tunn http://greatfriends.biz/webboards/msg.asp?id=39032

 Spring framework ตัวนี้ สุดๆ เลยครับ ทำให้เราเขียนโปรแกรมแบบ OO concept จริงๆ แต่ไปๆมาๆดันเหมือนเขียนโปรแกรมกับ config ซึ่งถ้าเขียนบน java มันมี spring bean editor เป็น plug in บน eclipse ทำให้เขียน config ง่ายหน่อย แต่ถ้าบน .net นี่ตอนนี้ยังเหนื่อยอยู่ คงต้องรอซักพัก

Concept ของ spring มีด้วยกัน 3 ส่วนครับคือ

- IoC ( inversion of control เน้นไปทาง DI ( dependency injection) spring ยิง object เข้ามาให้ )

- AOP ( Aspect Oriented Programming ทำให้เรา maintain โปรแกรมได้ง่ายขึ้น แต่ทำจริงก็ใช่ว่าจะง่าย ส่วนมากเอาไปใช้ ในงาน เกี่ยวกับ transaction , logging )

- Abstract base class ต่างๆ ทำให้ เขียนเพิ่มเติม ต่อยอด intregateระบบ ได้ง่ายขึ้น เช่น ในส่วนของ Data Access Layer คุณอาจจะใช้ NHibernate, ADO.NET หรือ iBatis.NET ก็แล้วแต่ คุณก็เอามา plug เข้ากับ bussiness layer โดยที่ตัว client ของคุณ ไม่จำเป็นต้องเปลี่ยนแปลง code เลย

 ตัวอย่าง นะครับ


 IoC :
   class Sorter {
        private ICollection collection;
        private ISortAlgo sortAlgo;
        public ISortAlgo SortAlgo {
             get { return this.sortAlgo; }
             set { this.sortAlgo = value; }
        }
        public ICollection Collection {
             get { return this.collection; }
             set { this.collection = value; }
        } 
 
        public void sorting() {
             this.sortAlgo.sort(this.collection);
        }
   }
 
   interface ISortAlgo {
          void sort(ICollection collection);
   }
 
   class BubbleSortAlgo : ISortAlgo {
         public void sort(ICollection collection) {
          // to do : implement bubble sort algo
         }
   }
   
   class InsertionSortAlgo : ISortAlgo {
         public void sort(ICollection collection) {
              // to do : implement insertion sort algo
         }
   }
 
spring config
   
        
   
   
   
   
   
   
   
เรียกใช้งาน
   public class Program {
      public static void Main() {
                    Sorter sorter = getSpringContext().getObject("sorter") as Sorter; 
                    sorter.Collection = getSampleCollection();
                    sorter.sorting();
                    display(sorter.Collection);
      }
   }
   

ประเด็นจะอยู่ตรง Class Sorter ครับ ถ้าเราเขียนแบบเดิม เวลาเราจะเปลี่ยน Sorting Algo เราต้องเขียนประมาณว่า

 ISortAlgo sortAlgo = new BubbleSortAlgo();
 หรือ
 ISortAlgo sortAlgo = new InsertionSortAlgo();

 ซึ่งจะทำให้เราต้องไปผูกกับ class ที่ implement interface ISortAlgo ไม่ตัวใดตัวหนึ่ง และ การเปลี่ยนอาจต้งอ compile program ใหม่ แต่ถ้าเราใช้ spring เราเพียงแค่ config ว่าจะยิง Sorting Algo ตัวไหนเข้าไป ( ตรง spring config น่ะครับ ) เปลี่ยน หรือ โปรแกรม เราไม่เปลี่ยนแปลง ไม่ต้อง complie ที่สำคัญคือ โปรแกรมเราผูกอยู่กับ interface ไม่ใช้ตัว implementation

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

การติดตั้ง SAP ABAP

ครั้งแรกผมว่าจะสอนวิธีติดตั้งเอง แต่ก็กลัวเรื่อง ลิขสิทธิ์ (เอ๊ะ หรือว่าคิดมากไปเอง)  เอาเป็นว่า ไปดูเว็บฝรั่งก็ได้น่ะ หรือไม่ก็ youtube ...