https://github.com/iluwatar/java-design-patterns
ลิงค์ที่แปะไว้เป็นลิงค์บน Gitbub ที่เขารวบรวม design patterns เอาไว้ใช้แก้โจทย์ปัญหาที่พบเจอบ่อยๆ ในการเขียนโปรแกรม โดยตัวอย่างโค้ดเขียนด้วยภาษา Java พร้อมคำอธิบายแต่ละ pattern ไว้อย่างครบถ้วน (ไลเซ่นเป็น MIT)
ที่สำคัญไม่ใช้มีแค่ design pattern ตระกูล GOF (Gang of Four) จำนวน 23 ตัวซะเมื่อไร มันมีมากกว่านั้นให้ศึกษาเยอะมากจริงๆ นับดูคร่าวๆ 90 กว่าตัวด้วยมั่ง (บางอันยังไม่รู้จักเลยครับ แฮๆๆ)
แต่ก่อนจะศึกษา Design pattern ไม่ว่าจะรูปแบบใด
ก็แนะนำให้อ่านหลักการออกแบบและพัฒนาซอฟต์แวร์ แนวคิดจะอิงกับวิธีเขียนโปรแกรมแบบ Object oriented (โปรแกรมเชิงวัตถุ) ก็ลองเข้าไปอ่านศึกษาดูลิงค์นี้นะครับ http://java-design-patterns.com/principles/
同時也有4部Youtube影片,追蹤數超過22萬的網紅BorntoDev,也在其Youtube影片中提到,อยากรู้ไหมว่าเกมมันสร้างยากแค่ไหน ? พี่ครับเพิ่มสกิลนิดหน่อยไม่ได้หรอ ? เรามาดูเบื้องหลังการสร้างสิ่งเล็กๆ อย่างสกิลลงเกมกันดีกว่า ! สำหรับใครที่เรียน...
「object-oriented design」的推薦目錄:
- 關於object-oriented design 在 โปรแกรมเมอร์ไทย Thai programmer Facebook
- 關於object-oriented design 在 โปรแกรมเมอร์ไทย Thai programmer Facebook
- 關於object-oriented design 在 โปรแกรมเมอร์ไทย Thai programmer Facebook
- 關於object-oriented design 在 BorntoDev Youtube
- 關於object-oriented design 在 prasertcbs Youtube
- 關於object-oriented design 在 prasertcbs Youtube
object-oriented design 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 八卦
สรุปให้ #โปรแกรมเมอร์ ขีดเส้นใต้เฉพาะมือใหม่ ควรเรียนรู้อะไรบ้าง? /เครดิตคุณ ijemmy
-ใช้ version control บทความนี้จะเป็น Git
-รู้จักคำสั่ง Linux + Command Line Interface (CLI)
-รู้จัก Shortcut ของ IDE/Editor ที่ใช้อยู่
-สำหรับ Web Dev หัดใช้เครื่องมือ debug ให้เป็น ซึ่งในบทความจะใช้ Chrome Developer Tool
-Design Patterns ซึ่งก็คือรูปแบบการแก้ปัญาที่พบเจอบ่อยๆ ในโลกเขียนโปรแกรม
ส่วนใหญ่ก็หนีไม่พ้นในรูป OOP (Object-oriented Programming)
แต่ OOP มันมีทั้งข้อดีข้อเสีย บางโจทย์ปัญหาไม่เหมาะเท่าไร
ถ้าเป็นไปได้ ลองเรียนรู้รูปแบบเขียนโปรแกรมอย่างอื่นๆ บางก็ดี
-หัดใช้ Docker
ส่วนทักษะอื่นๆ
-มีทัศนคติในการเรียนรู้
-ภาษาอังกฤษให้เป็น
-อย่าเน้นที่ปริมาณภาษา เน้นที่วิธีการเขียนโปรแกรม
-เรียนรู้สาขาต่างๆแบบตัว T หมายถึง ให้ลงลึกในสาขาหนึ่ง ส่วนสาขาอื่นๆรอบข้าง ไม่ต้องลงลึกมาก แต่ต้องพอรู้
-ทำงานร่วมกับผู้อื่นให้เป็น
-รู้จักดูแลสุขภาพตัวเอง
สำหรับด้านเทคนิค อยากเสริมเรื่อง Test, Refactoring , clean code
รวมถึงใช้เว็บพวก Google, Stack overflow ฯลฯ ใช้หาข้อมูลให้เป็น
พยายามอ่าน error หรือข้อความแจ้งเตือนต่างๆ ให้ออก อันนี้ก็สำคัญ ตกม้าตายกันได้ง่ายๆ เพราะบ้างทีข้อความมันแจ้งชัดว่าเกิดอะไรขึ้น แต่ไม่ได้ใส่ใจ
อ่านต่อภาค 2
http://www.notaboutcode.com/…/07-career-start-non-technical/
object-oriented design 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 八卦
วันนี้คุณรู้จัก SOLID
หลักการออกแบบโปรแกรมเชิงวัตถุ ที่ดีหรือยัง ว่าเป็นยังไง?
.
SOLID เป็นหลักการออกแบบการเขียนโปรแกรมเชิงวัตถุที่ดี (Object Oriented Design) นำเสนอโดย Robert C. Martin (ลุง Bob. )
:
SOLID ไม่ได้หมายถึง "ของแข็ง"
แต่มันมาจากชื่อพยัญชนะแรกของ 5 คำต่อไปนี้
- Single-responsibility Principle
- Open-closed Principle
- Liskov substitution principle
- Interface segregation principle
- Dependency Inversion principle
:
รายละเอียดก็จะประมาณเนี่ย สรุปให้คร่าวๆ
👉 1) Single-responsibility Principle
หลักการนี้ จะให้คลาส 1 อัน รับผิดชอบงานเดียว
ถ้าอนาคตจะมี change เกิดขึ้น
ก็เปลี่ยนเฉพาะงานนี้งานเดียว ที่คลาสนี้ที่เดียวเท่านั้น
จะไม่มีการ change มากกว่า 2 งานภายในคลาสเดียวกันประมาณเนี่ย
มิฉะนั้นจะตีกันตายได้
:
👉 2) Open-closed Principle
หลักการนี้ อ็อบเจ็กต์ หรือพวก คลาส มอดูล ฟังก์ชั่น แพ็กเกจ ไลบรารี่
เมื่อสร้างแล้วก็ควรฟิกไว้ ไม่ควรแก้ไข (เพราะมันอาจเทสเรียบร้อยแล้ว)
ถ้ามี change เกิดขึ้นมา ก็ต้องเปิดโอกาสให้ขยายต่อเติมได้
โดยเราจะไม่ไปแตะต้องโค้ดที่เคยเขียนขึ้นมาเด็ดขาด
:
👉 3) Liskov substitution principle
มันพัฒนามาจากหลักการข้อ 2 อีกที กล่าวคือ
คลาสแม่ควรจะฟิกไว้ ไม่ควรแก้ไข ไม่ควร change อีกแล้ว
(เพราะอาจเทสเรียบร้อย หรือออกแบบมาเรียบร้อย)
ถ้าจะ change ก็ให้ไปลงที่คลาสลูกเลย
โดยให้สร้างคลาสลูก ที่ขยายมาจากคลาสแม่อีกที
.
สำหรับหลักการข้อ 3 นี้ คลาสลูกจะสามารถเสียบแทนที่คลาสแม่ได้
โดยจะไม่ไปแก้ไขหน้าที่ (functionality) ของโค้ดหลักทั้งหมด
:
👉 4) Interface segregation principle
การออกแบบ interface ที่ดี ควรมีเมธอดที่จำเป็นเท่านั้น
คลาสลูกที่มา implement ไม่ควรได้เมธอดที่ไม่จำเป็นเกินมา
.
กล่าวอีกนัยหนึ่งการออกแบบ interface ที่ดี
ไม่ควรให้ interface มันทำงานครอบจักราล
ไม่ต้องใจดี เผื่อเมธอดเกินมา
ให้มีพอเพียง พอดีกับคลาสลูกก็พอนะครัช
:
👉 5) Dependency Inversion principle
หลักการนี้จะกล่าวถึง
- High level classess (อาจมองว่าเป็นมอดูลที่มีแต่ business logic ที่ซับซ้อนก็ได้)
- กับ Low Level Classes (อาจมองว่าเป็นมอดูลที่มีแต่ logic พื้นฐาน ทำงานระดับล่างๆ)
.
ซึ่ง class ทั้งสองระดับดังกล่าว
เวลาจะติดต่อกัน ก็ให้ทำผ่านทาง Abstraction Layer เท่านั้น
ไม่ควรติดต่อกันตรงๆ โต้งๆ
.
Abstraction Layer ก็คิดง่ายๆ
มันก็คือ Interface หรือ abstraction class นั่นแหละ
คือมีแต่รายละเอียดให้รู้เฉยๆ ยังไม่มีส่วน implements
เพราะเดียวจะมีคลาสมา implements แล้วมา plugin เสียบเข้าภายหลัง
.
..เขียนเป็นภาพก็ประมาณเนี่ย
High Level Classes --> Abstraction Layer --> Low Level Classes
:
++++++++
สำหรับคอนเซปต์ SOLID อาจยากต่อการเข้าใจนิดหนึ่งนะ
มันต้องเห็นโค้ดตัวอย่างด้วย
ยิ่งถ้าใครไม่เชียวชาญการเขียนโปรแกรมเชิงวัตถุ (Object Oriented programming)
หรือไม่ได้ลงมือเขียนจริงๆ จังเท่าไร
ก็อาจสงสัยมีมันทำไม?
.
แต่ทว่าการเขียนโปรแกรมเชิงวัตถุ ถ้าออกแบบไม่ดีนี้ ....บอกตรงๆ
..โค้ดจะเละ เทอะทะ ใหญ่โต
..อ่านโค้ดก็ยาก ย๊าก คลาสเยอะแยะมากมาย
.
ยังไงอ่านเพิ่มเติม ดูโค้ดตัวอย่างที่ออกแบบตามหลัก SOLID
ตามลิงค์นี้เขียนดี
https://www.oodesign.com/design-principles.html
https://scotch.io/…/s-o-l-i-d-the-first-five-principles-of-…
.
😘 โชคดีทุกท่านครับ ไปแหละ
เขียนโดยโปรแกรมเมอร์ไทย thai programmer
object-oriented design 在 BorntoDev Youtube 的評價
อยากรู้ไหมว่าเกมมันสร้างยากแค่ไหน ? พี่ครับเพิ่มสกิลนิดหน่อยไม่ได้หรอ ? เรามาดูเบื้องหลังการสร้างสิ่งเล็กๆ อย่างสกิลลงเกมกันดีกว่า ! สำหรับใครที่เรียน Object Oriented Programming แล้วก็ Design Pattern มาแล้วน่าจะทำให้เห็นภาพได้มากกกก ว่าเรียนไปแล้วจะเอาไปทำอะไรจ้า :D
▲ ติดตามช่องของเราได้ที่ : http://bit.ly/borntoDevSubScribe
▲ Facebook : https://www.facebook.com/borntodev
▲ Website : http://www.borntodev.com
?BorntoDev Channel คือ ช่องยูทูปที่เน้นสาระด้านเทคโนโลยี ไปพร้อมกับความสนุกสนาน และ รอยยิ้มเข้าไว้ด้วยกันทั้งในรูปแบบบทเรียน และ vlog
เพื่อการเปลี่ยนรูปแบบการเรียนรู้ด้านการพัฒนาโปรแกรม และ เทคโนโลยีแบบเดิม ๆ ที่เป็นเรื่องเฉพาะกลุ่มให้เข้าถึง เข้าใจได้ง่ายยิ่งขึ้น โดยพัฒนาเน้นไปที่รูปแบบการนำเสนอใหม่ ๆ ที่เป็นมิตรกับทุกคน
โดยมีผู้ดำเนินรายการหลัก 2 คนคือ
"เปรม BorntoDev" ผู้ชื่นชอบ และ หลงไหลด้านวิทยาศาสตร์ เทคโนโลยี รวมถึงการพัฒนาโปรแกรมเป็นชีวิตจิตใจ มีความสุขมากที่ได้ถ่ายทอด และ แลกเปลี่ยนความรู้ เพราะทำให้นึกถึงสมัยยังเป็นเด็กที่เริ่มต้นเขียนโปรแกรมแล้วได้รับการสนับสนุนจากผู้ใหญ่ใจดีในโลก Internet ที่ไม่เคยเห็นหน้าตากันมาก่อน แต่กลับยินดีแบ่งปันให้กัน
"ไกด์ BorntoDev" ชายผู้ที่บอกว่าเป็นพี่น้องกับคนข้างบนหรือเปล่า คำตอบคือไม่ใช่ แต่เขาสนใจด้านเทคโนโลยี การพัฒนาแอปพลิเคชัน ชอบความสนุก จัดกิจกรรม และ ที่ไม่พลาดคือการซื้อเกมมาดองแล้วไม่ได้เล่น เห็นหน้านิ่ง ๆ แบบนี้ดองเกมใน Steam เป็นแสน ๆ นะบอกเลย
▲ กิจกรรมใน Channel BorntoDev เป็นส่วนหนึ่งในการดำเนินงานของ บริษัท บอร์นทูเดฟ จำกัด ที่เปิดรับ Partners ที่สนใจร่วมเปลี่ยนแปลงให้สังคมไทยเป็นสังคมด้านวิทยาศาสตร์ และ เทคโนโลยีมากยิ่งขึ้น หากคุณสนใจสนับสนุน และ ก้าวไปพร้อมกัน สามารถติดต่อร่วมงานได้แล้ววันนี้
▲ ติดต่อโฆษณา สนับสนุน และ ร่วมงานได้ที่: borntodevth@gmail.com

object-oriented design 在 prasertcbs Youtube 的評價
============
ดาวน์โหลดไฟล์ตัวอย่างได้ที่ http://goo.gl/fr6EgW
============
playlist สอนการเขียนโปรแกรมเชิงวัตถุด้วย Java เบื้องต้น
https://www.youtube.com/watch?v=zC_0xOSX1dY&list=PLoTScYm9O0GEvHKqqib-AdVFwVe_2ln8W
============
playlist สอนภาษาจาวา Java เบื้องต้น
https://www.youtube.com/watch?v=O3rW9JvADfU&list=PLoTScYm9O0GF26yW0zVc2rzjkygafsILN
============
playlist สอนจาวา Java FileIO การอ่านเขียนไฟล์
https://www.youtube.com/watch?v=y4dfsuShUaw&list=PLoTScYm9O0GEsSpaLgFDuPWzUEZdtnuWs
============
playlist สอนจาวา Java การใช้ Collections ต่าง ๆ เช่น ArrayList, Map, Set, Stack
https://www.youtube.com/watch?v=JYTIQip_pak&list=PLoTScYm9O0GEskLFgdC02Swit1fcDWspM
============
playlist สอนการทำ Unit Test ภาษาจาวา Java
https://www.youtube.com/watch?v=R11yg8hKApU&list=PLoTScYm9O0GHiK3KNdH_PrNB0G3-kb1Bi
============
playlist สอนภาษา C เบื้องต้น
https://www.youtube.com/watch?v=Z_u8Nh_Zlqc&list=PLoTScYm9O0GHHgz0S1tSyIl7vkG0y105z
============
playlist สอนภาษา C# เบื้องต้น
https://www.youtube.com/watch?v=hhl49jwOIZI&list=PLoTScYm9O0GE4trr-XPozJRwaY7V9hx8K
============
playlist สอนภาษา C++ เบื้องต้น
https://www.youtube.com/watch?v=_NHyJBIxc40&list=PLoTScYm9O0GEfZwqM2KyCBcPTVsc6cU_i
============
playlist สอนภาษาไพธอน Python เบื้องต้น
https://www.youtube.com/watch?v=DI7eca5Kzdc&list=PLoTScYm9O0GH4YQs9t4tf2RIYolHt_YwW
============
playlist สอนภาษาไพธอน Python การเขียนโปรแกรมเชิงวัตถุ (OOP: Object-Oriented Programming)
https://www.youtube.com/watch?v=4bVBSluxJNI&list=PLoTScYm9O0GF_wbU-7layLaSuHjzhIRc9
============
playlist สอนภาษา R เบื้องต้น
https://www.youtube.com/watch?v=oy4qViQLXsI&list=PLoTScYm9O0GF6qjrRuZFSHdnBXD2KVICp
============
playlist สอนภาษา PHP เบื้องต้น
https://www.youtube.com/watch?v=zlRDiXjYVo4&list=PLoTScYm9O0GH_6LARFxozL_viEsXV2wgO
============
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่
https://www.youtube.com/subscription_center?add_user=prasertcbs

object-oriented design 在 prasertcbs Youtube 的評價
============
ดาวน์โหลดไฟล์ตัวอย่างได้ที่ http://goo.gl/sNcJge
============
playlist สอนการเขียนโปรแกรมเชิงวัตถุด้วย Java เบื้องต้น
https://www.youtube.com/watch?v=zC_0xOSX1dY&list=PLoTScYm9O0GEvHKqqib-AdVFwVe_2ln8W
============
playlist สอนภาษาจาวา Java เบื้องต้น
https://www.youtube.com/watch?v=O3rW9JvADfU&list=PLoTScYm9O0GF26yW0zVc2rzjkygafsILN
============
playlist สอนจาวา Java FileIO การอ่านเขียนไฟล์
https://www.youtube.com/watch?v=y4dfsuShUaw&list=PLoTScYm9O0GEsSpaLgFDuPWzUEZdtnuWs
============
playlist สอนจาวา Java การใช้ Collections ต่าง ๆ เช่น ArrayList, Map, Set, Stack
https://www.youtube.com/watch?v=JYTIQip_pak&list=PLoTScYm9O0GEskLFgdC02Swit1fcDWspM
============
playlist สอนการทำ Unit Test ภาษาจาวา Java
https://www.youtube.com/watch?v=R11yg8hKApU&list=PLoTScYm9O0GHiK3KNdH_PrNB0G3-kb1Bi
============
playlist สอนภาษา C เบื้องต้น
https://www.youtube.com/watch?v=Z_u8Nh_Zlqc&list=PLoTScYm9O0GHHgz0S1tSyIl7vkG0y105z
============
playlist สอนภาษา C# เบื้องต้น
https://www.youtube.com/watch?v=hhl49jwOIZI&list=PLoTScYm9O0GE4trr-XPozJRwaY7V9hx8K
============
playlist สอนภาษา C++ เบื้องต้น
https://www.youtube.com/watch?v=_NHyJBIxc40&list=PLoTScYm9O0GEfZwqM2KyCBcPTVsc6cU_i
============
playlist สอนภาษาไพธอน Python เบื้องต้น
https://www.youtube.com/watch?v=DI7eca5Kzdc&list=PLoTScYm9O0GH4YQs9t4tf2RIYolHt_YwW
============
playlist สอนภาษาไพธอน Python การเขียนโปรแกรมเชิงวัตถุ (OOP: Object-Oriented Programming)
https://www.youtube.com/watch?v=4bVBSluxJNI&list=PLoTScYm9O0GF_wbU-7layLaSuHjzhIRc9
============
playlist สอนภาษา R เบื้องต้น
https://www.youtube.com/watch?v=oy4qViQLXsI&list=PLoTScYm9O0GF6qjrRuZFSHdnBXD2KVICp
============
playlist สอนภาษา PHP เบื้องต้น
https://www.youtube.com/watch?v=zlRDiXjYVo4&list=PLoTScYm9O0GH_6LARFxozL_viEsXV2wgO
============
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่
https://www.youtube.com/subscription_center?add_user=prasertcbs

object-oriented design 在 物件導向設計:從需求轉程式Object Oriented Design (OOD) 的相關結果
物件導向設計 (Object-Oriented Design) 是一種思維,透過強調可重複性,一定程度上解決了軟硬體環境逐漸複雜而難以維護的問題。 物件導向程式設計中 ... ... <看更多>
object-oriented design 在 OOPs | Object Oriented Design - GeeksforGeeks 的相關結果
What Are Class & Object? It is the basic concept of OOP; an extended concept of the structure used in C. It is an abstract and user-defined data ... ... <看更多>
object-oriented design 在 物件導向設計- 維基百科,自由的百科全書 的相關結果
物件導向設計(Object-Oriented Design,OOD)方法是物件導向程式設計方法中一個環節。其主要作用是對分析模型進行整理,生成設計模型提供給OOP作為開發依據。 ... <看更多>