1、单件模式
单线程:
public class Singleton{
private static Singleton uniqueInstance;
private Singleton(){
}
public static Singleton getInstance(){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
public void test(){
System.out.println("test singleton");
}
}
public class test2 {
public static void main(String args[]){
Singleton asingleton=Singleton.getInstance();
Singleton bsingleton=Singleton.getInstance();
asingleton.test();
bsingleton.test();
}
}
多线程:
public class Singleton{
private static Singleton uniqueInstance;
private Singleton(){
test();
}
public static Singleton getInstance(){
synchronized(Singleton.class){//同步
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
}
return uniqueInstance;
}
public void test(){
System.out.println("test singleton");
}
}
2、代理模式
接口:
public interface MyForum {
public void AddFile();
}
代理类:
public class MyForumProxy implements MyForum {
private RealMyForum forum ;
private int permission ; //权限值
public MyForumProxy(int permission)
{
forum = new RealMyForum()
this.permission = permission ;
}
//实现的接口
public void AddFile()
{
//满足权限设置的时候才能够执行操作
//Constants是一个常量类
if(Constants.ASSOCIATOR == permission)
{
forum.AddFile();
}
else
System.out.println("You are not a associator of MyForum ,please registe!");
}
}
实体类:
public class RealMyForum implements MyForum {
public void AddFile() {
//省略具体实现步骤
System.out.println("AddFile");
}
}
3、观察者模式
一个实现发送邮件的观察者:
import java.util.Observable;
import java.util.Observer;
public class MailObserver implements Observer{
/**
* 这个类取名为MailObserver,顾名思义,她是一个用来发送邮件的观察者
*/
public void update(Observable o, Object arg) {
System.out.println("发送邮件的观察者已经被执行");
}
}
一个实现发送jms消息的观察者:
import java.util.Observable;
import java.util.Observer;
public class JMSObserver implements Observer{
public void update(Observable o, Object arg) {
System.out.println("发送消息给jms服务器的观察者已经被执行");
}
}
被观察者:
import java.util.Observable;
import java.util.Observer;
public class Subject extends Observable{
/**
* 业务方法,一旦执行某个操作,则通知观察者
*/
public void doBusiness(){
if (true) {
super.setChanged();
}
notifyObservers("现在还没有的参数");
}
public static void main(String [] args) {
//创建一个被观察者
Subject subject = new Subject();
//创建两个观察者
Observer mailObserver = new MailObserver();
Observer jmsObserver = new JMSObserver();
//把两个观察者加到被观察者列表中
subject.addObserver(mailObserver);
subject.addObserver(jmsObserver);
//执行业务操作
subject.doBusiness();
}
}