工厂模式

工厂模式模式(factory pattern)是一种被广泛使用的设计模式,它能够实现类的使用者与类的实现者之间的松耦合关系。

 

1.在客户端程序中不再使用new运算符来创建接口的实现类的对象,而是使用工厂的方法来获取对象。

2.客户端只依赖于接口和工厂,替换了实现类只需修改工厂即可,对客户端没有任何影响。

接口:

import java.util.Date;
public interface TimePrinter {
    void print(Date time);
}

实现接口的类

import java.text.*;
import java.util.*;
public class SchedualedTimePrinter implements TimePrinter  {
    @Override
    public void print(Date time) {
        // TODO Auto-generated method stub
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(df.format(time));
        try{
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e. printStackTrace();
        }        
    }
}

 

import java.text.*;
import java.util.*;
public class  SimpleTimePrinter  implements  TimePrinter {
    @Override public void print(Date time) {
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
         System.out.println(df.format(time));
    }
}

工厂类

public class TimePrinterFactory {
    public static TimePrinter getTimePrinter() {
        return new SimpleTimePrinter();
    }    
    public static TimePrinter getSchedualedTimePrinter() {
        return new SchedualedTimePrinter();
    }
}

服务类

import java.util.*;
public class Server {
    private TimePrinter printer;
    public void setTimePrinter(TimePrinter printer) {
        this.printer= printer;
    }
    public void start() {
        for(int i = 1; i <= 10; i++) {
            Date now = new Date();
            printer.print(now);
        }
    }
}

 

客户端操作类

public class Client {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Server s = new Server();
        TimePrinter printer = TimePrinterFactory.getSchedualedTimePrinter();
        s.setTimePrinter(printer);
        s.start();
    }
posted @ 2014-07-25 12:53  jhtchina  阅读(127)  评论(0)    收藏  举报