设计模式

设计模式有很多种:说几种比较常用的。

首先说一下单例设计模式:单例设计模式是一种创建型模式,指某个类采用单例设计模式模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。

下面通过程序理解一下:

publicclass Single {

//构造函数定义为私有的,所以不能通过new+构造方法()的形式创建对象访问

private Single(){

 

}

publicstatic Single s = new Single();

 

publicstatic Single getInstance(){

returns;

}

}

publicclass TestSingle {

publicstaticvoid main(String[] args) {

//通过下面这种方式创建对象来访问

Single s1 = Single.getInstance();

Single s2 = Single.getInstance();

// 对于引用数据类型来说,==比较的是地址。

System.out.println(s1==s2);

}

}

执行结果:

true

从结果来看,说明这两个对象是同一个,这也就证明了只能产生一个实例供外部访问的特点。

再说一下工厂模式:

//定义一个动物接口,里面是吃的方法

interface Animal{

publicvoid eat();

}

//创建每个动物类,并继承这个接口且需要重写吃的方法

class Tiger implements Animal{

@Override

publicvoid eat() {

System.out.println("tiger eat 肉");

}

}

 

class Cat implements Animal{

@Override

publicvoid eat() {

System.out.println("cat eat 鱼");

}

 

}

class Dog implements Animal{

@Override

publicvoid eat() {

System.out.println("Dog eat 骨头");

}

 

}

//创建一个工厂,用来判断不同动物对应的不同吃法

class Factory {

publicstatic Animal getAnimal(String name){

if("tiger".equals(name)){// 这样写避免空指针异常。

returnnew Tiger();

}elseif("cat".equals(name)){

returnnew Cat();

}elseif("dog".equals(name)){

returnnew Dog();

}

returnnull;

}

}

 

publicclass TestFactory {

publicstaticvoid main(String[] args) {

Animal a = Factory.getAnimal("dog");

a.eat();

}

}

执行结果:

Dog eat 骨头

这里的类和之前所说的内部类是不同的,内部类是定义在类的里面的,而这里的类是在类外面的,也就是说每个类都是独立的。

还有很多种设计模式,由于不是很常用,有的自己也不是很清楚,所以以后再添加吧,就先说这两种。