设计模式作业代码

来源:互联网 发布:北京神奇时代网络 编辑:程序博客网 时间:2024/05/22 04:48

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();  

    }  

} 

 

原创粉丝点击