2009-02-20 21 views
7

Tôi có phải là người duy nhất đôi khi có vẻ dễ dàng, nhưng không đúng cách trong các tình huống thiết kế nhất định? Tôi thừa nhận tôi đã chia sẻ các đối tượng Singleton đáng ngờ của mình. Bên cạnh đó, tôi đã được biết để làm cho một đối tượng Thiên Chúa hoặc hai để làm cho mọi thứ có vẻ dễ dàng hơn.Bạn sử dụng các mẫu chống phá nào mặc dù bạn biết bạn không nên làm gì?

Bạn có bao giờ sử dụng mô hình chống mặc dù bạn biết bạn không nên?

+0

Tôi tò mò về singleton. Cách lười biếng là chỉ sử dụng các hình cầu cũ đồng bằng, vậy tại sao bạn lại gặp rắc rối thêm khi sử dụng một * mẫu * phức tạp hơn? Globals có thể là xấu, nhưng họ thường ít xấu hơn so với người độc thân. Và dễ dàng hơn để mã quá. – jalf

+1

Niềm tin của tôi là Singletons vốn đã là một mẫu thiết kế xấu, chúng theo ý kiến ​​của tôi chỉ có thể sử dụng trong các trường hợp trình điều khiển phần cứng hiếm gặp. Trong hầu hết các trường hợp khác, họ chỉ giới thiệu trạng thái toàn cầu trong môi trường OOP của chúng tôi làm thiệt hại các mục tiêu chất lượng thiết kế như tính di động. –

+0

Tiếp tục từ bình luận cuối cùng - Tuy nhiên, tôi thường biện minh cho những người độc thân theo logic sau đây: "Tôi chỉ cần một trong số đó vì vậy tôi sẽ làm cho nó thành một singleton" mặc dù những gì tôi thực sự muốn sâu bên trong là một biến toàn cầu. –

Trả lời

2

Mẫu chống God Object là một sai lầm dễ thực hiện. Đôi khi nó có vẻ như quá nhiều công việc để phá vỡ các lớp học. Sau đó, tại một số điểm sau đó bạn trả tiền cho nó. Tôi đã tìm thấy mẫu chống này đi đôi với khớp nối chặt chẽ.

Mẫu chống khóa của nhà cung cấp cũng có thể khó tránh khi bạn sử dụng ngôn ngữ của nhà cung cấp cụ thể.

+0

Bạn có thể muốn chỉnh sửa điều đó để nói "Thiên Chúa". – CTT

+0

Tôi thích ý tưởng của một đối tượng gob - tất cả các miệng và không có quần một trong đó là phức tạp nhưng không thực sự làm rất nhiều. – Tom

+0

Tôi thực sự nghĩ rằng bạn đang sử dụng tiếng lóng. Một sự xấu hổ bạn đã thay đổi nó, bạn có thể đã bắt đầu một làn sóng mới, heh. –

6

Nó là rất dễ dàng cố gắng để làm một cái gì đó linh hoạt, và kết thúc với các Inner Platform Effect . Tôi có tội về cơ sở dữ liệu bên trong, ví dụ.

Và đôi khi quá hấp dẫn để tự viết mã những thứ thay vì sử dụng phiên bản tương tự được đóng trước đó - Not Invented Here. Tôi cố gắng tránh nó, nhưng ...

0

Vendor Lock In

Luôn luôn có là điều cụ thể một nhà cung cấp mà được thêm vào cho một phần cụ thể của chức năng vì nó có ý nghĩa hơn bằng văn bản đó cho mình. Tôi đã dành nhiều thời gian đá bản thân mình cho quyết định này sau này.

1

Trong nhận xét và tôi nghĩ Đó là đảm bảo là câu trả lời - mẫu Singleton.

Đó là một cách để đạt được các biến toàn cầu khi một ngôn ngữ (như Java) không hỗ trợ nó. Đây là một trong những mẫu mà bạn không bao giờ nên sử dụng - trừ khi bạn cần. Các bit quan trọng là có thể phân biệt giữa khi bạn cần phải có một biến toàn cầu (có trường hợp) và khi bạn chỉ muốn một.

Có vấn đề với người độc thân vượt quá các vấn đề nghiêm trọng khi giới thiệu trạng thái toàn cầu, trong Java chẳng hạn, chúng chỉ đơn trong bộ nạp lớp với nhiều trình nạp lớp bạn có thể kết thúc nhiều bản sao.

Các vấn đề liên quan