JAVA设计模式之单例(Singleton)模式

Filed under: DesignPattern, JAVA | Borrow: | No Comments »
Posted on

作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

单例模式特点:

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其它对象提供这一实例。

在写关于本篇Singleton Pattem之时,我也查阅很些资料,原来老师上课之时说有5种写单例模式的代码,到今日看书只有3种代码,再看到网上看到的一些关于单例模式中关于“双重锁定”的分析,所以在这我将以我的方式展现单例模式。

单例模式基本一致认为的应该分为2种。在书上定义的名字为饿汉式单例类和懒汉式单例类,按我们平常Java中的说法应该就是静态加载和延时加载方法。(书上还定义一种名字为登记式单例类,因为缺点多,基本我也没见哪用过,所以不在这说明了,有兴趣的朋友可以自己在网上搜索相关内容看看。)

1、饿汉式单例类(静态加载),这是种最Easy和Safe的方法,没有特别要求推荐用这个。 Read the rest of this entry »

JAVA设计模式之抽象工厂(Abstract Factory)模式

Filed under: DesignPattern, JAVA | Borrow: | No Comments »
Posted on

在阅读本篇以前,为了方便理解,请首先阅读本博的“JAVA设计模式之简单工厂(Simple Factory)模式”和“JAVA设计模式之工厂方法(Factory Method)模式”。

抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。抽象工厂的“抽象”来自于“抽象的产品角色”,而抽象工厂就是抽象产品角色的工厂。每一个设计模式都是针对一系列的问题的解决方案。抽象模式就是针对多个等级产品结构的系统而设计的。抽象工厂模式就是向客户端提供一个接口,使得客户端在不必知道产品的具体类型的情况下,创建多个产品族中的产品。

抽象工厂中的各个角色又是怎么样的呢?

抽象工厂(Abstract Factory)角色:该角色是工厂方法模式的核心,它是以应用程序无关的。它往往由接口或抽象类来实现。所有的具体工厂类都应该实现这个Java接口或是继承这个Java类。

具体工厂(Concrete Factory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑与系统的商业逻辑紧密相连。通常用具体的Java类来实现这个角色。

抽象产品(Abstract Product)角色:工厂方法模式所创建的对象的父类或它们的共同接口,它往往由接口或抽象类来实现。

具体产品(Concrete Product)角色:抽象工厂所创建的任何产品对象都是某一个具体产品的实例。这是客户端最终需要的东西。

Read the rest of this entry »

JAVA设计模式之工厂方法(Factory Method)模式

Filed under: DesignPattern, JAVA | Borrow: | No Comments »
Posted on

在阅读本篇以前,为了方便理解,请首先阅读本博的“JAVA设计模式之简单工厂(Simple Factory)模式”。

工厂方法模式是类的创建模式,有叫做虚拟构造子模式或者多态性工厂,工厂方法的用意是定义一个创建产品对象的工厂接口,将实际创建工作推到子类中。工厂方法模式是对简单工厂模式的抽象和推广;由于使用了多态性,工厂模式保持了简单工厂模式的优点,而又克服了它的缺陷。

工厂方法如何工作:

抽象工厂(Creator)角色:该角色是工厂方法模式的核心,它是以应用程序无关的。任何在模式中创建对象的工厂类必须实现这个接口。它往往由接口或抽象类来实现。

具体工厂(Concrete Creator)角色:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。

抽象产品(Product)角色:工厂方法模式所创建的超类型,也就是产品对象的共同父类或共同拥有的接口。它往往由接口或抽象类来实现。 Read the rest of this entry »

JAVA设计模式之简单工厂(Simple Factory)模式

Filed under: DesignPattern, JAVA | Borrow: | No Comments »
Posted on

在面向对象程序中,我们经常看到的一种模式就是简单工厂模式(Simple Factory Pattern)。简单工厂模式又叫做静态工厂方法模式,根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的行为不同。简单工厂模式实际上不属于23个GOF模式,但它可以作为工厂方法模式(Factory Method)的一个引导。

工厂模式如何工作:

工厂类(Creator)角色:该角色是工厂方法模式的核心,含有按照一定商业逻辑创建产品。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现。

抽象产品(Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。

具体产品(Concrete Product)角色:工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。

下面让我们以代码的形式,实战一回Simple Factory。 Read the rest of this entry »