自从喜欢上面向对象之后,我发现我能够很好的理解面向对象的方方面面,但设计出来的东西却无法体现这种思想的精髓所在,有可能是理解和实践的不够的原因,心中总觉得这些东西的背后会有一些让我难以摸透的。感觉总是找不到,这种思想到底体现的是一个什么样的东西呢?终于有一天,我和朋友约好去一个地方打球,到达目的地等他那个地方刚好是一个地铁站,我靠在柱子上面,我发现我靠的那根柱子有四根一样的,这个很平常其实也没有什么值得惊讶的,但是我的脑海中马上浮现出了接口,对,这个是接口,如果我要做一个东西,这个东西的接口部分如果都能够很好的为他的使用者服务,并且都体现了统一的原则,作为一种标准,那么这样的建筑的部件标准化就足够的统一,设计者不会因为一个柱子的所要承担的责任去改变他,而是对应的针对接口的规范做一些文章。而这种规范的修改其实是很少的。因为接口的原则是封装变化而不是做针对接口做修改。其实看看面向对象,最简单的理解很多人就是认为,很多对象在一些工作,没有错,但是者理解这种对象的时候,我发现我自己曾经也有过误区,凭什么判断呢?那就是面向对象的几大设计原则。
针对接口编程而不是具体类。
具体类应该是对内修改,对外关闭修改(扩展) 。
具体类具有单一的职责 。
面向对象的设计原则远远不止那么多,但这三点我认为是核心部分。
在设计模式里面四人帮把设计模式分为三个部分,创建型,行为型,结构型,我发现这三种类型的针对的是对象( 广义的说是class),不同是的单一对象或者是对象和对象之间的行为和动机。而完成这些互操作的是接口和抽象类,这两个也叫对象(狭义的说法),对客户端(调用者)而言这两个对象并没有实际的参与工作,而是根据不同对象的相互操作集中体现他们的职责,把对象的变化放在接口中,让调用者仅仅看到的是接口,而不是具体的实现方法。他直接带来的好处是降低了对象之间的耦合度,让每一个对象关注自己干了什么事情,接口隔离了单个对象和其他对象之间的行为,所有对象之间的互操作都通过接口来完成。不让他们之间发生零距离接触。对象的动机和想法是设计模式扩展的必要条件,四人帮有23种,只能说是经典的,远远不止,在实际的开发种,如果对设计模式的最核心的原则有一个很好的把握的时候,相信也可以随心所欲的结合现有的项目做出很不错的设计。
我理解接口和具体类的方式是,具体类是干活的人,接口是为了让你更好的干活不受外界干扰的人或者一种行政制度。
过去有很多的软件设计方法论,共性和可变性设计是最常用的,但是这种方法论还没有体现一个高度去解决现在软件设计中遇到的问题,模式的大力推广使得软件设计翻开了新的篇章。