设计模式的本质是什么(转)

设计模式的本质是面向对象方法的实际运用。具体而言,是封装、继承、多态和关联的反复使用。可以说,现在市面上关于设计模式的书没有一本是适合初学者的。套用网上看到的句型:你跟他讲模式,他跟你谈UML;你跟他讲UML,他跟你谈软件工程;你跟他讲软件工程,他跟你谈解耦;你跟他讲解耦,他跟你谈框架;你跟他讲框架,他跟你谈哲学;你跟他讲哲学,他跟你谈建筑;你跟他讲建筑,他又跟你谈模式。 
感觉真正理解什么是设计模式,就是要透彻理解OO的四大要素:封装、继承、多态和关联。其中核心是封装的概念。 
拿最基本的数据类型举例: 
int a = 3; 
这里,我创建了一个数据对象实例:a。如果我将这个创建过程封装成对象 
class Int { 
private int a = 3; 
public static int getIntInstance() { 
return a; 


这不就是工厂方法吗?不理解设计模式本质的人会说这是多此一举。有没有明白人能告诉我是真的多此一举吗? 
上面的例子是数据封装,下面举一个逻辑封装的例子: 
循环遍历大概初学编程的人没有不会的。例如,有一个数组 
int[] intArray = new int[] {56,27,19,31,22, 9}; 
如果要访问数族中的每一个元素,最常见的方式 
for(int i=0; i<intArray.length; i++) { 
println(intArray[i]); 

在这个循环中,有三个逻辑:1. 判断逻辑:i<intArray.length;2. 访问逻辑:intArray[i];3. 递增:i++。 
将这三个逻辑加以封装 

class MyIterator { 
int i=0; 
int[] intArray; 
MyIterator (int[] intArray) { 
this.intArray = intArray; 

// 封装了第一个逻辑 
boolean hasNext() { 
return i<intArray.length; 

// 封装了第二个和第三个逻辑 
int next() { 
return intArray[i++]; 


这样,我们就可以这样遍历了 
MyIterator myIterator = new MyIterator(intArray); 
while(myIterator.hasNext()) 
println(myIterator.next()); 

这不就是迭代子模式吗。捅破了窗户纸,所谓“设计模式”,只不过是一些编程技巧罢了。真用不着上纲上线。只是,封装这个看似简单的概念,被用到了极致。 
数据可以封装,函数可以封装,逻辑可以封装,对象可以封装,网络可以封装,硬件可以封装,连人的思想都可以封装。马克思在《资本论》中开宗明义第一句就是:资本主义生产方式占统治地位的社会的财富,表现为“庞大的商品堆积“。 

OO方式下的占绝对地位的基本概念,表现为”封装的无所不在“。


原文链接:http://www.douban.com/group/topic/35784789/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值