接口上常用的设计模式:外观模式(Facade),桥接模式(Bridge),结构型(structural)设计模式

接口上最常用的设计模式,外观模式(Facade),桥接模式(Bridge),他们都是属于结构型Structural的设计模式。

可能大伙对外观模式不是很熟啊,这是啥模式啊,其实平时我们是经常使用的,比如说,引入第三方的jar包,它提供的所有的api功能全在一个client类,我们

只需要操作client这个类,调用就行了,这个就是外观模式啊。

外观模式:这个外观类为子系统提供一个共同对外的接口。

demo代码实现:

public class FacadePraticeDay4 {

    /**
     * 模拟jar包的内部的接口
     */
    public static interface LogicService{
        void printName(String name);
    }

    /**
     * 模拟jar包的内部的接口实现1
     */
    public static class LogicServiceImpl1 implements LogicService{

        @Override
        public void printName(String name) {
            System.out.println(String.format("name:%s-%s","logicServiceImpl1",name));
        }
    }
    /**
     * 模拟jar包的内部的接口实现2
     */
    public static class LogicServiceImpl2 implements LogicService{

        @Override
        public void printName(String name) {
            System.out.println(String.format("name:%s-%s","logicServiceImpl2",name));
        }
    }
    /**
     * 模拟jar包的内部的接口实现3
     */
    public static class LogicServiceImpl3 implements LogicService{

        @Override
        public void printName(String name) {
            System.out.println(String.format("name:%s-%s","logicServiceImpl3",name));
        }
    }

    /**
     * 提供一个clientService给客户端访问
     * 里面是所有的接口功能实现
     */
    public static class ClientService{
        private LogicServiceImpl1 logicServiceImpl1;
        private LogicServiceImpl2 logicServiceImpl2;
        private LogicServiceImpl3 logicServiceImpl3;

        public ClientService() {
            this.logicServiceImpl1 = new LogicServiceImpl1();
            this.logicServiceImpl2 = new LogicServiceImpl2();
            this.logicServiceImpl3 = new LogicServiceImpl3();
        }

        public void printName1(String name){
            logicServiceImpl1.printName(name);
        }

        public void printName2(String name){
            logicServiceImpl2.printName(name);
        }
        public void printName3(String name){
            logicServiceImpl3.printName(name);
        }
    }

    public static void main(String[] args) {
        ClientService clientService = new ClientService();
        clientService.printName1("你叉叉");
        clientService.printName2("你叉叉");
        clientService.printName3("你叉叉");
    }
}

桥接模式,可能又有很多人不知道啊,这个模式好陌生啊,怎么会常用呢,其实真的是最常用的设计模式了,我们的MVC三层架构,controller里面放着service,这就是桥接模式

这扩展一下知识点,什么是MVC模式:(模型-视图-控制器)

M是业务模型,V是用户界面,C指控制器,使用MVC的目的是将M和V的代码分离,C的存在是确保M和V的同步,M一旦改变,V随之同步。

controller里面使用@Autowired注解注入Service接口,这个service就是一个桥,可以放serviceImpl1,这个实现类,可以放serviceImpl2这个实现类

代码实现:

public class BridgePraticeDay5 {

    public static class MvcController{
        //这个就是桥,既可以连接impl1,可以连接impl2
        private MvcService mvcService;

        public MvcController(MvcService mvcService) {
            this.mvcService = mvcService;
        }

        public void execute(){
            this.mvcService.execute();
        }
    }

    public static interface MvcService{
        void execute();
    }

    public static class MvcServiceImpl1 implements MvcService{

        @Override
        public void execute() {
            System.out.println("execute1");
        }
    }

    public static class MvcServiceImpl2 implements MvcService{

        @Override
        public void execute() {
            System.out.println("execute2");
        }
    }

    public static void main(String[] args) {
        MvcController mvcController = new MvcController(new MvcServiceImpl1());
        mvcController.execute();
        mvcController = new MvcController(new MvcServiceImpl2());
        mvcController.execute();
    }
}

好的,到饭点了,吃饭了

posted @ 2021-12-29 11:29  正能量教官  阅读(291)  评论(0编辑  收藏  举报