几种设计模式的总结

1、单例模式

原理:

最佳实现

public class SingletonUtils
{

    private static class Holder
    {
        private static final SingletonUtils instance = new SingletonUtils();
    }

    public int i;

    private SingletonUtils()
    {
        //
        i = 10;
    }

    public static final SingletonUtils getInstance()
    {
        return Holder.instance;
    }
}

2、工厂模式

原理

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

2.1 工厂模式

public class FactoryUtils
{
    
    enum TypeValue
    {
        TYPE1,
        TYPE2
    }
    
    TypeValue value = TypeValue.TYPE1;
    
    public FactoryUtils(TypeValue value)
    {
        // TODO Auto-generated constructor stub
        
        this.value= value;
    }

    
    public IFactory creator()
    {
        switch (value)
        {
        case TYPE1:
            return new ProductA();
        case TYPE2:
            return new ProductB();
        default:
            return null;
        }
    }
    
    
}

2.2抽象工厂模式

interface IProduct1 {  
    public void show();  
}  
interface IProduct2 {  
    public void show();  
}  
  
class Product1 implements IProduct1 {  
    public void show() {  
        System.out.println("这是1型产品");  
    }  
}  
class Product2 implements IProduct2 {  
    public void show() {  
        System.out.println("这是2型产品");  
    }  
}  
  
interface IFactory {  
    public IProduct1 createProduct1();  
    public IProduct2 createProduct2();  
}  
class Factory implements IFactory{  
    public IProduct1 createProduct1() {  
        return new Product1();  
    }  
    public IProduct2 createProduct2() {  
        return new Product2();  
    }  
}  
  
public class Client {  
    public static void main(String[] args){  
        IFactory factory = new Factory();  
        factory.createProduct1().show();  
        factory.createProduct2().show();  
    }  
}

3、适配器

模式所涉及的角色有:

  ●  目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。

  ●  源(Adapee)角色:现在需要适配的接口。

  ●  适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。

public class Adapter {
    private Adaptee adaptee;
    
    public Adapter(Adaptee adaptee){
        this.adaptee = adaptee;
    }
    /**
     * 源类Adaptee有方法sampleOperation1
     * 因此适配器类直接委派即可
     */
    public void sampleOperation1(){
        this.adaptee.sampleOperation1();
    }
    /**
     * 源类Adaptee没有方法sampleOperation2
     * 因此由适配器类需要补充此方法
     */
    public void sampleOperation2(){
        //写相关的代码
    }
}

缺省:可以访问blog http://www.cnblogs.com/java-my-life/

你可能感兴趣的:(几种设计模式的总结)