设计模式(三)--工厂模式

来源:互联网 发布:淘宝优惠卷群怎么代理 编辑:程序博客网 时间:2024/06/05 17:24

★ 场景和问题

Java程序开发讲究面向接口编程,隐藏具体的实现类,可是如何得到接口呢?

工厂的本质是“选择实现”.

工厂、接口和实现类之间的技术边界:工厂只负责选择实现,实现类才做真正的实现,而接口是限定到底实现什么东西和返回什么东西,三者之间分工明确、各负其责。

附代码如下:

package SingelModel.pattern.factory.dep;public interface Api {public String t();}
package SingelModel.pattern.factory.dep.impl;import SingelModel.pattern.factory.dep.*;;public class imp1 implements Api {@Overridepublic String t() {return "1111Over!!!";}   }
package SingelModel.pattern.factory.dep.impl;import SingelModel.pattern.factory.dep.Api;public class imp2 implements Api {@Overridepublic String t() {String str = "2383";return str;}}
package SingelModel.pattern.factory.dep;import SingelModel.pattern.factory.dep.impl.imp1;import SingelModel.pattern.factory.dep.impl.imp2;public class ApiFactory {     /**      * 工厂类的命名规范:XXXFactory      * 工厂方法的命名规范:      *   获得当前类的实例:getInstance(),newInstance()      *   工厂类中的生产接口: getXXXApi(),createXXXApi()      *//** * 首先把工厂类的构造方法私有化,避免外部造实力 */private ApiFactory(){}public static Api getApi(){return  new imp1();}public static Api getApi(int type){if(type==1){return new imp1();}return new imp2();}}


测试类:

package SingelModel.pattern.factory.client;import SingelModel.pattern.factory.dep.Api;import SingelModel.pattern.factory.dep.ApiFactory;public class Client {public static void main(String[] args) {Api api = ApiFactory.getApi();String str = api.t();System.out.println(str);System.out.println("-----------");api = ApiFactory.getApi(1);System.out.println(api.t());api = ApiFactory.getApi(2);System.out.println(api.t());}}


测试结果如下:

1111Over!!!-----------1111Over!!!2383




原创粉丝点击