概述
设计模式的本质是面向对象方法的实际运用。具体而言,是封装、继承、多态和关联的反复使用。可以说,现在市面上关于设计模式的书没有一本是适合初学者的。套用网上看到的句型:你跟他讲模式,他跟你谈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/
最后
以上就是单纯枕头为你收集整理的设计模式的本质是什么(转)的全部内容,希望文章能够帮你解决设计模式的本质是什么(转)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复