David West dalam bukunya Object Thinking (bab 10, bagian 1, sub-bagian 2) mengusulkan bahwa dalam lingkungan OO yang ideal, setiap objek harus mampu menampilkan diri berdasarkan permintaan; baik itu untuk manusia (sebagai GUI), komponen non-asli (seperti JSON dan / atau XML), atau pihak lain yang berkepentingan:
Pemikiran objek mengatakan bahwa pandangan (kadang-kadang disebut antarmuka) —grafis atau sebaliknya — adalah sarana bagi suatu objek untuk berkomunikasi dengan objek lain dan tidak lebih. Kebutuhan akan tampilan muncul ketika suatu objek perlu menampilkan dirinya dalam bentuk "non-pribumi" ke beberapa objek lain (biasanya manusia) atau aplikasi (misalnya, tampilan XML untuk objek data yang dibagikan di seluruh platform).
Penemuan kebutuhan dan parameter yang harus dipenuhi oleh tampilan dimanifestasikan dalam skenario di mana objek berpartisipasi. Setiap kali suatu objek diminta untuk menampilkan dirinya, ia harus menggunakan tampilan — representasi — yang sesuai untuk pengirim pesan tampilan itu. Jika, misalnya, suatu objek mencoba untuk instantiate sendiri (mendapatkan nilai untuk dirinya sendiri), objek itu harus menyajikan pandangan itu sendiri sebagai permintaan implisit kepada manusia (atau objek penyedia layanan lainnya) untuk suatu nilai. Jika kami sedang membangun GUI yang akan berfungsi sebagai perantara antara objek perangkat lunak dan objek manusia, kami akan menggunakan mesin terbang untuk tujuan tampilan dan widget untuk tujuan interaksi.
Tapi mesin terbang dan widget mana yang perlu dimasukkan dalam GUI? Hanya yang diperlukan untuk menyelesaikan skenario atau skenario yang menarik segera saat aplikasi berjalan. Perspektif ini berlawanan dengan intuisi untuk sebagian besar pengembang karena menunjukkan bahwa GUI harus ditentukan dari aplikasi keluar.
Sebagai contoh, pertimbangkan tempat pembuatan bir. Di satu sisi ada tong-tong berisi bir. Di jalur produksi kompleks yang terdiri dari mesin cuci botol, stasiun pengisi, mesin penutup, dan perakit paket. Di atas itu semua adalah stasiun kontrol yang memantau tempat pembuatan bir dan memberitahu manajer manusia tentang status dan masalah. Pengembang tradisional cenderung memulai analisis dan desain "sistem manajemen tempat pembuatan bir" dari sudut pandang panel kontrol. Ini analog dengan mendesain dari antarmuka di.
Sebaliknya, berpikir objek menyarankan agar Anda mempertimbangkan objek mana yang merupakan pelanggan utama tempat pembuatan bir dan semua mesin yang banyak sekali. Atas nama siapa ada labirin peralatan yang rumit itu ada? Jawaban bisnis yang benar adalah, tentu saja, "Pelanggan." Tetapi jawaban yang lebih mencerminkan pemikiran objek adalah, "Bir." Semua skenario ditulis dari perspektif bir, mencoba masuk ke dalam botol, dengan topi, ditempatkan dalam paket, dan tinggal di truk. Panel kontrol adalah pengamat pasif 5 dari keadaan tempat pembuatan bir. Jika bir menemui masalah di beberapa titik, bir bertanggung jawab untuk meminta intervensi dari operator manusia dengan mengirimkan pesan ke panel kontrol (atau panel kontrol khusus mesin) yang meminta layanan intervensi.
Perspektif ini akan menyederhanakan desain GUI dan, yang lebih penting, menghilangkan host dari objek manajer dan pengontrol yang tampaknya tak terhindarkan muncul ketika merancang dari perspektif panel kontrol (GUI).
Berasal dari seorang pemula di dunia OO: haruskah ini benar-benar terjadi?
Memiliki objek yang tahu bagaimana merepresentasikan diri mereka tentu dapat mengurangi jumlah objek controller / manager yang berulang kali dikatakan Barat dalam bukunya, seorang Object Thinker seharusnya mencoba menghindari dengan cara apa pun. Tetapi tidakkah mematuhi "aturan" ini merusak SRP ?
Juga (jika ternyata memang demikian), mengingat implementasi yang khas di, katakanlah, aplikasi Android: Bagaimana seseorang dapat mencapai tujuan seperti ini? Haruskah setiap objek yang kita buat tahu bagaimana menampilkan dirinya sebagai View?