1.概念 《设计模式》一书中对于建造者模式是这样定义的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其实建造者模式就是用来创建复合对象,并把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。有点拗口,首先我们来看看它的UML图:
Builder:为创建一个Product对象的各个部件制定抽象接口。 ConcreteBuilder:具体的建造者,它负责真正的生产。 Director:导演, 建造的执行者,它负责发布命令。 Product:最终消费的产品。 2、例子 下面我们举个例子来加深我们对Builder模式的理解。 ...
1.概念
《设计模式》一书中对于抽象工厂模式是这样定义的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
看过定义后可能有点不知所云,很难很抽象,下面我们举个例子看看吧,延续上篇blog设计模式-工厂方法的例子!
2、示例
// 产品 Plant接口
public interface Plant { }//标志接口
//具体产品PlantA,PlantB
public class PlantA implements Plant {
public PlantA () {
System.out.println ...
1.概念
《设计模式》一书中对于工厂方法模式是这样定义的:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 看过定义后可能有点费解,下面我们举个例子看看吧!
2.简单工厂模式
先简单说下简单工厂模式,简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式。缺点是违反了开闭原则。
//生产产品的工厂类
public class ProductFactory{
public static Product generateProduct(int which){
//这 ...
在《设计模式-单例模式》这篇文章中对单例模式做了一个简单的介绍,接下来本文主要讨论的是多例模式、多线程、双重检查以及“不完全”单例类。
一、多例模式
所谓多例模式,实际上就是单例模式之自然推广,单例类一般情况下只可以有一个实例,但单例类也可以推广到允许有限个实例,这种模式就是多例模式,它的主要特点:多例类可以有多个实例。
二、多线程
下面这段代码使用了线程同步,可以说是线程安全的,一个类不会出现多个实例。如果没有synchronized同步,则在单线程中是安全的,但是到多线程中就可能会出现多个实例。
public class LazySingleton
{ ...
1.概念
《设计模式》一书中对于Singleton模式是这样定义的:保证一个类有且仅有一个实例,并且提供了一个全局的访问点。
2.动机
在很多操作中,比如建立目录,打印机,数据库连接都需要这样的单线程操作,如果一个类有多个实例存在的话,就可能带来并发的问题。
这就提出了一个问题:一般每个类中的构造函数都是public,如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这就是单例模式需要解决的问题。
为了防止单态模式的类被多次实例化,应将类的构造器设成private或protected,这样就保证了只能通过静态方法获得类实例。如果构造器设置为private,那么就不能单例的子类 ...
早就听说GOF的《设计模式》是OOP(面向对象程序设计)程序员都必备的参考书之一,它是所有面向对象语言(C++ Java C#)的基础。我接触Java也有段时间了,可是也一直停留在语言层次,对Java中接口或抽象类理解并不是太深。在看前辈们写的代码的时候,感觉差距还是不小,他们写的代码里处处体现设计模式的思想。
一、什么是抽象类
《设计模式》中对于抽象类是这样定义的:抽象类的这样目的是为它的子类定义公共接口,不能被实例化。
public abstract void noAction();
此方法只有申明而没有方法体,并且void前面出现abstract关键字,我们将此方法称为抽象方法,并且 ...
创建模式
1.工厂方法模式(Factory Method)
多态性工厂模式,创建一个产品的工厂接口,把实际的工作转移到具体的子类。
public class TestFactoryMethod {
public static void main(String[] args) {
AnimalFactory af=new DogFactory();
Animal1 a=af.getAnimal();
}
}
abstract class Animal1{}
class Dog1 extends Animal1{}
class Cat1 extends Animal1{}
...







评论排行榜