1. 封装 (encapsulation)
其实封装本来就是人们面对复杂度的一种本能,针对某一问题点的广度与深度之间找到适
切的焦点。邓小平就曾说过:“不管黑猫或白猫,能抓到老鼠的就是好猫”。其实这就是把系
统当作黑箱 (black-box)的封装概念了。 :)
设计模式 (DP, Design Pattern)内的“Facade”,即为强调封装某一主体 (context)内
部繁杂的细节。
例如,两大平台的 Web MVC (Model/View/Control)是一种因应 Web 端的技术解决方案,
实际上 Controller 仅为 UI 端的控制逻辑,却不适合担任资料存取(data access)与逻
辑运算(business logic)的工作。所以在大型系统的开发上,一般会设计中间层的“领域
物件 (domain controller)”,将上述两大类的工作 (资料存取/逻辑运算)由其当窗口
(entry-poing),再视工作性质,委派 (delegate)给专司其职的成员物件 (如
DAO/Utility, Business Object ...等)。
此时“Domain Controller”就是一种系统的“Facade”物件,封装了资料存取与逻辑运
算的细节,UI 端 (Web/Standalone Form/Mobile App/外部系统)不需要知道如何处理,
只要能取得所需要的结果即可。
不仅程式写码,在 UML 的使用案例 (use case)需求分析技术中,就擅用了封装的技巧 (
系统功能(主题)->程序/工作事项->细节(资料字段/计算逻辑)),先抓大的操作目的,再
来包容善变的细节。
在软件工程来说,这比较能造成“低耦合 (low coupling)”的效果。
作者:
kwpn (ITSST)
2017-11-13 17:20:00第一篇不是有人推"三句没讲出重点就下一个问题了 谁会听你废话"
作者:
elements (Helianthus annuns)
2017-11-13 17:22:00考试大概可以拿一百
作者:
kaufmann (抓住虚幻的尾巴)
2017-11-13 17:35:00认真解答疑惑
作者: buper (ymsrc) 2017-11-13 18:31:00
先推解释
作者: WiseLin1125 (Wise) 2017-11-13 18:42:00
清楚明了
作者:
bibo9901 (function(){})()
2017-11-13 18:45:00一本正经的废话
作者: pttuser (pttuser) 2017-11-13 19:18:00
这些背完,面试官都睡觉了问多型最简单的方法:C如何实现多型,会的话OO问完了不会的话,面试也问完了^o^
作者:
art1 (人,原来不是人)
2017-11-13 19:30:00不看专有名词的部分应该很好懂吧,一般化/特殊化会看不懂?保险的例子也能看不懂?
作者:
bibo9901 (function(){})()
2017-11-13 19:50:00这些概念跟本不需Object也能做到C没有object, FP跟本连class都没有, 难道就做不到封装继承多态了? 这只是指出了“好程式”的特性, 并没有解释OO如何解决这些需求
搞不好面试官只是想要你回答Object Oriented Programming
作者:
jej (晃奶大馬桶)
2017-11-13 20:16:00画一个class diagram 结束
上次看到滴妹(阿滴英文)解释facade的意思,真是有那么一瞬认为她超适合当软件工程的代言人啊
作者:
shiauji (消極)
2017-11-13 21:09:00这篇会很难懂吗?我非本科觉得解释很精辟
作者:
bibo9901 (function(){})()
2017-11-13 22:42:00不是难懂. 是太广泛到几乎是废话
楼上你真的会OOP吗XD 他写这样你懂?我指sh大XD
作者:
bibo9901 (function(){})()
2017-11-13 22:51:00就好像我问你“微波炉是什么?”,而你的回答是1.可以加热 2.可以放在家里 3.只要放得进去的食物都可以当然是很好懂而且道理也没错....只是有讲跟没讲一样比较有建设性的回答应该是加热原理、适用情形、使用规则
我还是喜欢深入浅出拿鸭子跟pizza的范例 好记又好懂
作者:
elements (Helianthus annuns)
2017-11-13 23:54:00微波炉那个 要看你是面试厨师还是电机工程师
作者:
art1 (人,原来不是人)
2017-11-14 02:12:00没有解释如何解决吗? 那封装继承多型不算解决方法?
作者:
shiauji (消極)
2017-11-14 06:03:00这个 在做大型专案开发时不都要用到这些观念吗? 顺便讲个我原本是物理系的 不觉得这个多难懂....
作者: silent5566 (沉默五六) 2017-11-14 09:15:00
懂OOP的看得懂这篇 不懂的还是不懂觉得可以用简单的譬喻或实做上的心得说明
作者: jefflu 2017-11-14 10:36:00
其实我觉得应该是 inheritance is for code reuse, and polymorphism is for extending the code.
作者:
Vick753 (彬彬)
2017-11-14 11:33:00写的不错了