一.工厂模式
我的理解:一个创建对象实例的接口,可以根据客户端不同的需求创建所需的相应对象实例。
1.普通工厂:一种工厂类生产多种不同的实例。
2.抽象工厂:抽象工厂下可创建多种工厂类,每种工厂类生产多种不同的实例。(使用于业务更复杂的场合,更灵活,低耦合)
二.原型模式
我的理解:根据实际调用Object.clone()方法的方法所在的类,得到这个类的拷贝(相对简单)
三.建造者模式
我的理解:构建一个一个独立的功能,再用一个单独的模块去组装这些功能,最终返回包含各个独立功能的复杂模块。
(各个功能彼此独立,组装这些功能和这些独立的功能之间也独立,低耦合)
四.单例模式
我的理解:说到单例模式,真的不敢太枉加评说,感觉单例模式涉及的底层东西比较多,写出一段堪称完美的单例模式的代码不是个简单的事情,
主要是在多线程,跨服务器的情况下。
public class Singleton {
private Singleton() {};
private static final Singleton single = new Singleton();
public static Singleton getInstance() {
return single;
}
}
上面这段代码,如果在单个jvm下我认为应该是基本可以实现线程安全的单例,但如果是跨服务器跨jvm的应该就不好用了,
需要进一步用同步块来控制,如何控制得当,在网上看到了一些,大概是用双重判断空等等,还有用静态内部类的,
应该可以基本满足需要,例如把上面代码稍微改一下
public class Singleton {
private Singleton() {};
private static class SingletonFactory {
private static final Singleton single = new Singleton();
}
public static Singleton getInstance() {
return SingletonFactory.single;
}
}
如果哪位高手有经典的单例代码欢迎指教@@
以上四种模式为创建模式,说白了就是用来创建对象的几种思想
五.外观模式
我的理解:外观模式的核心思想是把各个相似功能作成各个模块,这样这些模块之间就不会相互影响相互依赖,
从而达到了低耦合的效果,然后再通过一个核心类(外观类)把这些模块组织起来,
外观类或许需要随时变换以达到实现不同功能的目的(当然我想也可以通过一些手段使它不必变换)。
对于用户而言,只需固定的调用这个外观类即可(这个外观类表面上给用户的也只是一个固定的外观)
看过一些对这个设计模式的介绍,说这是一个比较简单的设计模式。看上去好像确实不难,
可我觉得对这些设计模式的理解可能不是很难,但最重要的是能否把这些设计模式的思想恰到好处地
运用到我们的实际项目中去,这才是最关键的,也是最考验我们程序员功力的地方。努力吧!!!