您的位置:首页 > 编程语言 > Java开发

java30:设计模式

2016-02-02 17:51 387 查看
设计模式:

模式化的解决方案

三类

创见型模式:

单例模式,工厂模式

结构型模式:

装饰模式,代理模式

静态代理,动态代理

行为型模式:
模板模式,迭代器模式

单例模式:
又名单实例模式

使用这个模式设计的类,全局应保证只有一个实例,不管什么时候都只有一个实例
package day30;
/**
*
*	单例模式->当前类的实例,全局唯一
*/
public class Box {
private int width;
private int height;

private static Box box = new Box();//定义一个私有的当前类型的属性

private  Box(){//私有的构造方法,外接就不能通过new 来创建实例了
}

public static  Box getBox(){//定义一个公用的静态方法,用于获取当前类型的,静态方法需要使用static属性
return box;
}

public int getWith(){
return width;
}
public int getHeight(){
return height;
}
public void setWith(int width){
this.width = width;
}
public void setHeight(int height){
this.height =height;
}

}

package day30;

public class TestBox {
public static void main(String[] args){
Box b1 = Box.getBox();
b1.setHeight(2);
Box b2 = Box.getBox();
System.out.println(b1 == b2);
System.out.println(b2.getHeight());

}
}
单例模式的实现步骤:

1・私有化构造方法

2・提供一个共有的静态的可以获取当前类型实例的方法

3・定义一个私有的静态的当前类型的实例,给步骤2的方法返回

模板模式:
定义一个操作中的算法过程的骨架,而将部分细节操作延迟到子类去实现

package day30;

public abstract class Person {//抽象类,对于模板大多是抽象的
public void sayHello(){//介绍自己
System.out.println("大家好");
System.out.println("我叫"+getName());
System.out.println(getInfo());
System.out.println(sayGoodBye());
}
public abstract String getName();
public abstract String getInfo();
public abstract String sayGoodBye();

}

package day30;

public class Student extends Person{

public String getInfo(){
return "个人基本情况、教育背景、学习经历、外语和计算机应用水平、工作经验、个人成果获奖情况、能力和专长";
}
public String getName(){
return "lmdtx";
}
public String sayGoodBye(){
return "88";
}
}

package day30;

public class Teacher extends Person{
public String getInfo(){
return null;
}
public String getName(){
return "";
}
public String sayGoodBye(){
return "さようなら";
}
}

package day30;

public class TestPerson {
public static void main(String[] args){
Person p1 = new Student();
p1.sayHello();
Person p2 = new Teacher();
p2.sayHello();
}
}


本文出自 “浪漫的偷笑” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: