博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linkin大话设计模式--抽象工厂
阅读量:6231 次
发布时间:2019-06-21

本文共 2135 字,大约阅读时间需要 7 分钟。

linkin大话设计模式--抽象工厂

在前面讲到的简单工厂里面虽然实现了我们那个类和其中的依赖的解耦,但是在产生我们需要的依赖的那个工厂里面还是和具体的产品类耦合了  现在要是还想彻底解耦的话怎么办呢?  就是在我们调用依赖的时候,传入一个参数,然后加入自己的判断这样子的话也就解耦了。在高一个层次就是把工厂也设计成接口和实现类,这样子的话调用一个工厂的工厂先产生一个工厂,然后再调用不同的工厂产生一个产品。貌似有点绕,忽忽,至少我现在不是很懂这样子设计的最大的益处。

代码如下:

public class Computer {        //将其中的依赖设置成属性 注意其中的类型是接口    private Output out;        //默认的构造器      最好不要省略 不管用到不用到    public Computer(){            }        //属性注入的构造器   一般在使用简单工厂的时候     都是将其中的依赖作为输入注入  在spring中也可以使用set方法来注入    public Computer(Output out) {        super();        this.out = out;    }    public void out(){        out.outPrint();      }    public static void main(String[] args) {        OutputFactory out = OutputFactoryFactory.getOutputFactory("2");        Computer computer = new Computer(out.getOutput());         computer.out();    }}//这里将工厂也变成了接口   现在的设计就是编译时候类型全部都是接口interface OutputFactory{    public Output getOutput();    }class OutputFactory1 implements OutputFactory{    @Override    public Output getOutput() {        //实现了接口里面方法 产生对应的工厂的产品        return new Output1();    }    }class OutputFactory2 implements OutputFactory{    @Override    public Output getOutput() {        //不同的工厂生产不同的实体产品        return new Output2();    }    }//接口  在上面的Computer类中调用了一个依赖的方法    其中这个类型就是下面的接口的interface Output{    public void outPrint();}class Output1 implements Output{    @Override    public void outPrint() {        System.out.println("output1...");    }    }class Output2 implements Output{    @Override    public void outPrint() {        System.out.println("output2...");    }    }class OutputFactoryFactory{    //曾经李刚老师说过说    要是没有太多的代码经验的话  设计模式纯属扯淡 其他的设计模式我可能还有体会  但是这个抽象工厂真心没有感觉  忽忽   反而有点复杂化了。。    //我个人暂时的认为 这里只不过是默认在调用一个依赖的时候不再直接new对象了 以后依赖重构的话这里的代码是不用动的 但是这样子的不停的实现接口  也没见得有多么简单    public static OutputFactory getOutputFactory(String outputFactoryType){        if("1".equalsIgnoreCase(outputFactoryType)){            return new OutputFactory1();        }else{            return new OutputFactory2();        }    }}

很多时候,我们不需要纠缠简单工厂模式,抽象工厂模式这些概念,他们统称为工厂模式。

1、如果工厂直接生产被调用对象,那么就是简单工厂模式。
2、如果工厂生产了工厂对象,那么就升级成为了抽象工厂模式。

转载于:https://www.cnblogs.com/LinkinPark/p/5233191.html

你可能感兴趣的文章
创建使用 framework和 a静态库
查看>>
nagios客户端未启动报错
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
《OpenGL ES应用开发实践指南:Android卷》—— 1.3 初始化OpenGL
查看>>
PHP 数值
查看>>
Javascript 中的上下文
查看>>
使用scrapy的定制爬虫-第二章-概
查看>>
枚举类型 enum,NS_ENUM,NS_OPTIONS
查看>>
Ez×××客户端在服务器侧没有配置隧道分离的情况下如何直接上公网
查看>>
list集合练习笔记
查看>>
SQLserver From simple To Full backup model
查看>>
Centos7.5-文件权限管理
查看>>
tomcat虚拟主机 server.xml文件配置
查看>>
Capture Nx
查看>>
OC中的NSSet(集合)
查看>>
马士兵教学语录
查看>>
计算机网络与Internet应用
查看>>
每天一个linux命令-mkdir
查看>>
四天精通shell编程(二)
查看>>
标签制作软件中如何导出标签模板为PDF文件?
查看>>