Tôi có thể gặp phải loại vấn đề gì nếu tôi không sử dụng Mẫu thiết kế phần mềm? Bạn có thể cho tôi biết về các vấn đề tiếp cận thiết kế bằng cách sử dụng các kỹ thuật hướng đối tượng tiêu chuẩn?
Tôi có thể gặp phải loại vấn đề gì nếu tôi không sử dụng Mẫu thiết kế phần mềm? Bạn có thể cho tôi biết về các vấn đề tiếp cận thiết kế bằng cách sử dụng các kỹ thuật hướng đối tượng tiêu chuẩn?
Câu trả lời:
Bạn đang thiếu điểm.
Các mẫu thiết kế vốn đã tồn tại khi thực hiện thiết kế phần mềm, giống như các mẫu cấu trúc tồn tại trên thế giới. Ngay cả khi bạn không biết tên của sự vật, cuối cùng bạn sẽ thấy rằng các cấu trúc vật lý nhất định rất phù hợp cho một số vấn đề nhất định. Bạn sẽ thấy rằng hình dạng tam giác của thanh gỗ / kim loại / vv là một cấu trúc rất ổn định, nhưng chỉ trên một mặt phẳng. Bạn sẽ thấy gạch vuông có những lợi thế nhất định so với những viên tròn ...
Tương tự, các cấu trúc phần mềm nhất định theo một cách nào đó là duy nhất hoặc tối ưu. Cuối cùng bạn sẽ tìm thấy chúng và sử dụng chúng bất kể bạn biết tên của chúng. Đó là cốt lõi của các mẫu thiết kế là gì - chúng là tên của các cấu trúc này mà các lập trình viên có kinh nghiệm biết và sử dụng mọi cách. Nó cung cấp cho các lập trình viên khả năng giao tiếp đồng đều và ngắn gọn hơn nhiều. Nó cũng cho phép các lập trình viên suy nghĩ trong các khái niệm về các mẫu có ý thức hơn.
Vì vậy, hai điểm chính tôi đang cố gắng thực hiện:
Những người không thể nhớ lại quá khứ bị kết án để lặp lại nó.
Bạn sẽ không phải đối mặt với bất kỳ vấn đề cụ thể nào ngoài những vấn đề do thiết kế của bạn nêu ra. Và trong thời gian bạn sẽ kết thúc việc sử dụng các mẫu mà không nhận thức được, bạn chỉ cần dành thời gian để tự mình tìm ra chúng. Biết các mẫu trước giúp chúng dễ dàng phát hiện hơn trong thiết kế và mang lợi thế lớn mà chúng được chứng minh bởi một số cá nhân.
Tất cả mọi thứ đang được phát triển ngày nay chủ yếu dựa trên kiến thức trước đây, sẽ không có ý nghĩa gì nếu bỏ qua nó. Hãy tưởng tượng việc xây dựng một tòa nhà chọc trời ngày nay mà không biết những vấn đề mà những người xây dựng thánh đường phải đối mặt hàng trăm năm trước.
Tôi có thể gặp phải loại vấn đề gì nếu tôi không sử dụng Mẫu thiết kế phần mềm?
Bạn sẽ gặp vấn đề là không thể viết bất kỳ phần mềm nào.
Biến là một mẫu thiết kế.
Phương pháp là một mẫu thiết kế.
Toán tử - phép cộng, phép trừ, v.v. - là một mẫu thiết kế.
Báo cáo là một mẫu thiết kế.
Giá trị là một mẫu thiết kế.
Tài liệu tham khảo là một mẫu thiết kế.
Biểu hiện là một mẫu thiết kế.
Các lớp học là một mẫu thiết kế.
...
Tất cả mọi thứ bạn làm trong lập trình mọi lúc là một mẫu thiết kế . Hầu hết thời gian mô hình đã ăn sâu vào suy nghĩ của bạn đến nỗi bạn đã ngừng nghĩ về nó như là "một mẫu thiết kế". Những thứ mà bạn phải học như "mẫu đơn" v.v ... chỉ đơn giản là những mẫu chưa (chưa) được đưa vào bất kỳ ngôn ngữ nào bạn đang sử dụng.
Bạn có thể cho tôi biết về các vấn đề tiếp cận thiết kế bằng cách sử dụng các kỹ thuật hướng đối tượng tiêu chuẩn?
Không. Tôi không biết câu hỏi này có nghĩa gì. Các mẫu thiết kế là "các kỹ thuật hướng đối tượng tiêu chuẩn" - đó là những gì làm cho chúng thiết kế các mẫu . Mẫu thiết kế là một kỹ thuật tiêu chuẩn để giải quyết một vấn đề cụ thể, đặc biệt (mặc dù không nhất thiết ) trong một ngôn ngữ hướng đối tượng.
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.- Đó là (gần như) định nghĩa của một mẫu thiết kế - một cấu trúc mã linh hoạt / dễ sử dụng lại được sử dụng để vượt qua giới hạn trong chính ngôn ngữ, dễ dàng giao tiếp với người khác. Khi nó là một phần của ngôn ngữ, nó không còn là một mẫu thiết kế nữa.
Hiểu điểm của một mẫu thiết kế quan trọng hơn việc sử dụng nó cho chữ cái. Một số mẫu là, IMO, ngớ ngẩn, ít nhất là trong các mô hình ngôn ngữ mà tôi quen thuộc. IMO, một lập trình viên chỉ đơn giản sử dụng các mẫu thiết kế một cách mù quáng và không thực sự hiểu chúng là một lập trình viên tồi tệ hơn so với người muốn tự mình suy nghĩ mọi thứ. Nhưng ai đó tự làm quen với các ý tưởng và sau đó tự quyết định xem liệu chúng có giá trị có khả năng trở thành một lập trình viên mạnh hơn nhiều không.
Điều đó nói rằng, tôi không có! @ # $ Ing ý tưởng điểm cân nặng là gì và tôi không xấu hổ khi thừa nhận điều đó. (xem bình luận cho một mục wikipedia khác đã giúp rất nhiều)
Tôi đề nghị mục của wikipedia về các mẫu thiết kế. Nó được viết rất chính xác và rõ ràng. Rất hữu ích để có được một ý tưởng về lý do tại sao một người có thể bận tâm với một mẫu thiết kế nhất định hay không. Cá nhân tôi có xu hướng tìm ra những cái đơn giản nhất hữu ích nhất và sẽ không nghĩ hai lần về việc sửa đổi một triển khai nhất định của bất kỳ mẫu nào cho phù hợp với nhu cầu của tôi.
Chúng là những ý tưởng, không phải bản thiết kế. Trong một số ngôn ngữ, chúng không phải là ý tưởng hay. Ở những người khác, họ được coi là những người không thể khắc phục được những điểm yếu trong thiết kế ngôn ngữ có thể được bù đắp tốt hơn thông qua sự phức tạp ít hơn. Bất kể, việc kiểm tra chúng và cố gắng hiểu những thách thức mà chúng phải vượt qua trước khi quyết định các giải pháp ưa thích của bạn là điều không hại.
Những loại vấn đề bạn sẽ phải đối mặt? Bạn có thể bỏ lỡ các cơ hội và dành nhiều thời gian cho các vấn đề hơn mức cần thiết trừ khi bạn là một thiên tài lập trình, người đã tìm ra tất cả. Điều quan trọng là duy trì một con mắt quan trọng của các ý tưởng lập trình phổ biến nhưng không bao giờ đau lòng để hiểu những gì mọi người nghĩ họ đang giải quyết vì điều đó sẽ cho vay rõ ràng hơn các giải pháp / phương pháp ưa thích của riêng bạn.
Vấn đề chính bạn sẽ gặp phải là bạn sẽ phát minh lại bánh xe . Chúng được gọi là các mẫu vì chúng xuất hiện thường xuyên và theo cách có thể dự đoán được.
Ngay cả khi bạn làm theo các mẫu thiết kế, bạn có thể sẽ có một thiết kế xấu. Các mẫu thiết kế là tự nhiên và cuối cùng bạn sẽ sử dụng một số hương vị của nó trong thiết kế của bạn. Bạn sẽ phải cố gắng rất nhiều để không sử dụng bất kỳ mẫu nào. Không có lý do để lên án các mẫu thiết kế, điều quan trọng hơn là chọn các mẫu phù hợp với nhu cầu của bạn
Bạn đang sử dụng các mẫu thiết kế mọi lúc mà không nhận ra nó. Rất nhiều thư viện tiêu chuẩn trong các ngôn ngữ phổ biến được thiết kế với các mẫu thiết kế trong tâm trí. Một ví dụ là FileReaderthư viện của Java được thiết kế bằng mẫu thiết kế trang trí . Bây giờ nói về mã của riêng bạn, bạn không bị buộc phải sử dụng các mẫu thiết kế (trong hầu hết các trường hợp). Mẫu thiết kế là "giải pháp có thể tái sử dụng cho một vấn đề thường xảy ra" , có nghĩa là nó sẽ giúp bạn viết mã dễ bảo trì hơn để bạn thực sự muốn tránh kết thúc với mã spaghetti.