设计模式,不需要你创新,只需要强大的复制能力!!!复制能力的建立是在你对问题的深入洞察以及对经验的深刻理解之上的。
何谓模式?
模式乃为解决某一类问题而设计的一套通用的解决方法。模式的出现也相当于是定义了一套标准,某类问题就直接按这套标准解决就行,而不用担心千百种形式各异的解法。这在建筑方面或许不大利于创新,但在软件工程界不知道为码农提供了多大的便利。描述模式的四个步骤:
1) 问题描述:描述该模式解决的问题是什么样的;
2) 应用场合:在什么环境(这个环境是指什么?)下使用该模式;
3) 设计方法:该模式是怎样设计的;
4) 优缺点:该模式的优缺点是什么。设计模式的优点:
1) 节省时间,不用你自己想设计方案,套用一个就好;
2) 方便沟通交流,只要懂设计模式,不管用什么语言,你都能轻松理解;
3) 易于扩展、复用和维护(我在想设计模式是怎么做到的?);面向对象的设计原则:
1) 单一功能原则:每个类的功能尽可能的简单,尽可能向高内聚低耦合靠拢;
2) 开闭原则:对修改封闭,对扩展开放;
3) 里约代替原则:在使用基类对象的地方都可以使用子类对象代替,该原则是实现开闭原则的重要依据;
4) 控制反转原则:在设计时,应当针对抽象进行设计,而非针对具体实现进行设计。该原则是开闭原则的具体实现方式;
5) 接口隔离原则:在设计时,应当将一个大接口依据单一职责原则分解成多个小接口,使各个小接口所具有的方法内聚性更高;
6) 合成复用原则:将一个类的对象作为另一个类的属性。在代码重用的时候,如果使用继承不能满足里约代替原则,那么就尽可能使用合成复用;
7) 迪米特法则:一个类应当与其他类尽可能的减少联系。有必要的话可以引进第三方类来作为联系纽带。单例模式
在某些场合下,对于一个类,我们只能允许它的一个实例存在,在这种情况下,我们就可以使用单例模式。单例模式有两种设计方法,分别称为饿汉式和懒汉式。
1)饿汉式:其原理是在类中创建一个私有的静态实例,同时提供一个返回静态实例的公有静态方法。在类加载的时候就会创建该类的实例,需要使用时直接调用公有方法即可。为什么叫饿汉式?可以这么理解:哎呀,我很饿啊,你赶紧给我拿吃的过来。所以就在类加载时就创建了。
2)懒汉式:在类中先创建一个值为空、类型为该类类型、的私有静态变量,但并不创建对象。与此同时,提供一个公有的静态方法,该方法判断静态变量是否为空,为空则使用同步方法创建该类的一个实例,并返回静态变量。为什么叫懒汉式?你现在反正不要,我懒得现在就给你,你什么时候要我再给你。哈哈!!!
这两种模式最大的不同是一个在类加载时就创建了类的实例,一个在类加载后需要时才会创建。这两种方法各有各的优点。
1)饿汉式优点:空间换取时间,比较适合经常使用的情况,因为在类加载时就创建了实例,不像懒汉式还需要先进行判断实例是否创建。
2)懒汉式优点:时间换取空间,比较适合资源紧张,对象不怎么经常使用的情况。