标签:
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式的分类
总体来说设计模式分为3大类:
创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。
1、单例模式
在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。
这样的模式有几个好处:
1)某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2)省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3)有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
2、工厂模式
1)简单工厂:建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
2)工厂方法:多个工厂方法模式是提供多个工厂方法,分别创建对象。
3)静态工厂方法模式:将工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
3、适配器模式
package edu.smc.xiao.study; /** * 设计模式 * @author smljf * @date 2016年1月2日 下午7:41:21 */ public class StudyDesignPattern { public static void main(String[] args) { Singleton s = Singleton.getIntance(); System.out.println(s); SimpleFactory simpleFactory = new SimpleFactory(); Product product = simpleFactory.createProduct("A"); product.getName(); FactoryMethod factoryMethod = new FactoryMethod(); Product product2 = factoryMethod.createProductB(); product2.getName(); AbstractFactory abstractFactory= new ProductAFactory(); Product product3 = abstractFactory.creatProduct(); product3.getName(); } } /** * 单例模式 * 构造方法必须为私有 */ class Singleton{ private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getIntance(){ return instance; } } /** * 简单工厂 */ class SimpleFactory{ public Product createProduct(String type){ if ("A".equals(type)) { return new ProductA(); }else if ("B".equals(type)) { return new ProductB(); }else { System.out.println("类型不正确!"); return null; } } } /** * 工厂方法 */ class FactoryMethod{ public Product createProductA(){ return new ProductA(); } public Product createProductB(){ return new ProductB(); } } /** * 抽象工厂 */ interface AbstractFactory{ public Product creatProduct(); } /** * A工厂 */ class ProductAFactory implements AbstractFactory{ @Override public Product creatProduct() { return new ProductA(); } } /** * B工厂 */ class ProductBFactory implements AbstractFactory{ @Override public Product creatProduct() { return new ProductB(); } } /** * 产品接口类 */ interface Product{ public void getName(); } /** * 产品A */ class ProductA implements Product{ @Override public void getName() { System.out.println("Hello I‘m ProductA ..."); } } /** * 产品B */ class ProductB implements Product{ @Override public void getName() { System.out.println("Hello I‘m ProductB ..."); } }
ps:还没看完 。。。
参考资料:
》Java开发中的23种设计模式详解(转) http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
标签:
原文地址:http://www.cnblogs.com/xiaotangai/p/5095205.html