工厂模式+策略模式 去掉if else

简单的工厂模式(静态工厂模式)

定义:提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类

Factory:工厂类, 创建产品内部逻辑,被外界直接调用,创建所需对象

product:产品类, 工厂创建所有产品的父类,封装所有产品的公有方法

ConcreteProduct:产品,简单工厂模式的创建目标,所有被创建的对象都充当这个角色的某个具体类的实例

工厂方法模式

定义定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行

Product:抽象产品,定义工厂方法所创建的对象的接口,也就是实际需要使用的对象的接口

ConcreteProduct:具体产品,具体的 Product 接口的实现对象

Factory:工厂接口,也可以叫 Creator(创建器),申明工厂方法,通常返回一个 Product 类型的实例对象

ConcreteFactory:工厂实现,或者叫 ConcreteCreator(创建器对象),覆盖 Factory 定义的工厂方法,返回具体的 Product 实例

抽象工厂模式

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂(Abstract Factory)模式,又称工具箱(Kit 或 Toolkit)模式。

AbstractFactory:抽象工厂,用于声明生成抽象产品的方法

ConcreteFactory:具体工厂,实现抽象工厂定义的方法,具体实现一系列产品对象的创建

AbstractProduct:抽象产品,定义一类产品对象的接口

ConcreteProduct:具体产品,通常在具体工厂里,会选择具体的产品实现,来创建符合抽象工厂定义的方法返回的产品类型的对象。

Client:客户端,使用抽象工厂来获取一系列所需要的产品对象

 

策略模式

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。

如何解决:将这些算法封装成一个一个的类,任意地替换。

关键代码:实现同一个接口。

 

 

 

 工厂类:

public class ServiceFactory {
    public ServiceClient getClient(String code) throws
            InstantiationException, IllegalAccessException, IllegalArgumentException,
            InvocationTargetException, NoSuchMethodException, SecurityException,
            ClassNotFoundException {
        return (ServiceClient) Class.forName("com.honey.service.serviceImp.Service" + code).
                getConstructor().newInstance();
    }
}

 接口类:

public interface ServiceClient {

    public String process(String data) throws RemoteException, IOException;

}

 

实现类: 

public class Service0101 implements ServiceClient {
    @Override
    public String process(String data) throws IOException {
        SqlSession session = MybatisUtil.getSqlSession();
        String res = new HospWebServiceProxy().aaaaaaa(data);
        JSONObject jsonObject = JSONObject.parseObject(res);
        aaaaaaa aaaaaaa= JSON.parseObject(jsonObject.get("data").toString(), aaaaaaa.class);
        int count = session.insert("aaaaaaa.insert",aaaaaaa);
        session.close();
        return res;
    }
}

 

posted @ 2021-04-25 13:54  耳屎收藏家  阅读(382)  评论(0)    收藏  举报