设计模式 1----------简单工厂

来源:互联网 发布:网络语荡漾的意思 编辑:程序博客网 时间:2024/05/17 20:21

学习 1      简单工厂模式


1.场景

  客户端需要调用接口里的方法

2.不用模式的解决方案

三个类   (1)接口API

               (2)接口API的实现类Impl

               (3)客户端Client

代码如下:

Api.java

public interface Api {    public void test1(String s);}

Impl.java

public class Impl implements Api {    @Override    public void test1(String s) {        System.out.println("Now In Impl1.  The input s==" + s);    }}

Client.java

public class Client {    public static void main(String[] args) {        Api api = new Impl();        api.test1("测试");    }}
缺点:客户端不但知道了接口,还知道了具体的实现就是Impl,客户端根本就不应该知道具体的实现类Impl


3.使用简单工厂模式来解决问题

四个类   (1)接口API

               (2)接口API的实现类Impl1和Impl2

               (3)工厂类Factory

               (4)客户端Client

代码如下:

Api.java

public interface Api {    public void operation(String s);}


Impl1.java

public class Impl1 implements Api {    @Override    public void operation(String s) {        System.out.println("Now In Impl1.  The input s==" + s);    }}


Impl2.java

public class Impl2 implements Api {    @Override    public void operation(String s) {        System.out.println("Now In Impl2.  The input s==" + s);    }}


Factory.java

public class Factory {    public static Api createApi(int condition) {        Api api = null;        if (condition == 1) {            api = new Impl1();        } else if (condition == 2) {            api = new Impl2();        }        return api;    }}

Client.java

public class Client {    public static void main(String[] args) {        Api api = Factory.createApi(1);        api.operation("测试");    }}
              

这样的话,从客户端来看,它根本不知道具体的实现是什么,也不知道是如何实现的,它只知道通过工厂获得了一个接口对象,然后通过这个借口来获取想要的功能



0 0