单例模式使用很频繁,也很简单,但不一定都能写对,详细的写法请参考:如何正确地写出单例模式。里面详细的分析的单例模式的各种写法。
这里给出一个推荐的实现方式(枚举):
public enum EasySingleton{ INSTANCE;}2、工厂方法模式(Factory MethodPattern)
别名:虚拟构造(Another Name:Virtual Constructor)。
Define an intece for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclassess.
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
何时使用
用户需要一个类的子类的实例,但不希望与该类的子类形成耦合 用户需要一个类的子类的实例,但用户不知道该类有哪些子类可用
优点
使用工厂方法可以让用户的代码和某个特定类的子类的代码解耦 工厂方法使用户不必知道它所使用的对象是怎样被创建的,只需知道该对象有哪些方法即可。
简单工厂模式
介绍工厂方法模式前,先介绍一下简单工厂模式,简单工厂模式也是一种工厂方法模式。
简单工厂模式又称静态工厂方法模式。从命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
如果一个一些对象(产品),已经确定了并不易改变和添加新的产品,那么久可以使用简单工厂模式。下面就是简单工厂的例子:
//演示简单工厂public class SimpleFactory { public static void main(String args[]) throws Exception{ Factory factory = new Factory(); factory.produce("PRO5").run(); factory.produce("PRO6").run(); }}//抽象产品intece MeizuPhone{ void run();}//具体产品X2class PRO5 implements MeizuPhone{ @Override public void run() { System.out.println("我是一台PRO5"); }}class PRO6 implements MeizuPhone{ @Override public void run() { System.out.println("我是一台PRO6"); }}//工厂class Factory{ MeizuPhone produce(String product) throws Exception{ if(product.equals("PRO5")) return new PRO5(); else if(product.equals("PRO6")) return new PRO6(); throw new Exception("No Such Class"); }}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-2.html
一来在世界舆论面前证明自己仍是世界老大
让她为了求全三天打五次飞机
假