工厂模式+策略模式 去掉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; } }

浙公网安备 33010602011771号