码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式

时间:2016-01-02 22:23:17      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

设计模式(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 ...");        
    }
    
}
View Code

 

 ps:还没看完 。。。

参考资料:

》Java开发中的23种设计模式详解(转) http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html

 

设计模式

标签:

原文地址:http://www.cnblogs.com/xiaotangai/p/5095205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!