"23种java设计模式"
Java设计模式是软件设计中的一种解决方案,它提供了一种通用的设计思想和方法,帮助开发者更好地设计和实现软件系统。Java设计模式可以分为三种:创建模式、结构模式和行为模式。
**创建模式**
创建模式是指在创建对象时的设计模式,它提供了一种创建对象的接口。创建模式包括:
* Factory(工厂模式):提供创建对象的接口。工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。
* Singleton(单态):确保一个类只有一个实例,并提供一个全局访问点。
* Builder(建造者模式):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
* Prototype(原型模式):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
* 工厂方法模式:提供了一种创建对象的接口,但是允许子类决定实例化哪一个类。
**结构模式**
结构模式是指在对象之间的关系和结构的设计模式。结构模式包括:
* Flyweight(共享模式):使用共享对象来减少内存的使用。
* Bridge(桥模式):将一个对象的抽象部分与其实现部分分离,使得它们可以独立地变化。
* Decorator(装饰模式):动态地给一个对象添加一些额外的职责。
* Composite(组合模式):将对象组合成树形结构以表示部分和整体的关系。
* Adapter(适配器模式):将一个类的接口转换成客户希望的另外一个接口。
* Proxy(代理模式):为其他对象提供一个代理,以控制对这个对象的访问。
* Facade(外观模式):为子系统中的一组接口提供一个一致的界面。
**行为模式**
行为模式是指在对象之间的交互和行为的设计模式。行为模式包括:
* Iterator(迭代模式):提供一种方法来访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部细节。
* Template(模板模式):定义一个操作中的算法骨架,并将一些步骤延迟到子类中。
* Chain of Responsibility(责任链模式):使多个对象都有机会处理请求,将请求沿着链传递直到被处理。
* Memento(纪念品模式):在不破坏封装性的前提下,捕捉一个对象的内部状态,并在外部保存这个状态。
* Mediator(中介模式):定义一个对象来封装一组对象之间的交互。
* Interpreter(解释器模式):给定一个语言,将该语言的句子解释为一个抽象语法树。
* Strategy(策略模式):定义一个家族的算法,将每个算法都封装起来,并使得它们之间可以互换。
* State(状态模式):允许一个对象在其内部状态改变时改变它的行为。
* Observer(观察者模式):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
* Visitor(访问模式):表示一个作用于某对象结构中的各元素的操作。
* Command(命令模式):将请求封装成对象,以便使用不同的请求、队列或日志来参数化客户端。
在Java设计模式中,工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。工厂模式的定义是提供创建对象的接口,为何使用工厂模式?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如Aa=new A()工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
在使用工厂模式时,我们需要注意的是,我们经常要在创建实例对象时做点初始化的工作,这时可以使用Sample的构造函数,这样生成实例就写成:Samples sample=new Sample(参数);但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那你的代码很难看了(就需要Refactor重整)。