代理模式和工厂模块总结

代理模式

代理:代理是代理人于代理权限内,代理人以被代理人的名义向第三人表达相应意思,或者表示领会意思。
代理模式可从该定义中看到的关键点有:
1、代理人的权限仅限于被代理人所给予的权限。
2、被代理人不直接向第三方表达自己的意思,而是借助代理人表达
3、第三方通过表面,只知道这是代理人的意思。(可以起到隐藏和保护的功能)

对代理模式中各类的分析

父类
首先是代理模式中的父类,该父类可以说是被代理人要求代理人所做的事的抽象类,因为代理人和被代理人的功能所以才有该父类,因为用来连接代理人和被代理人,所以一般将该父类设置成一个借口。
被代理人
因为被代理人是该事件的实际执行着,所以被代理人应该实现父类中的所用功能。并且连接父类,以便与代理人联系
代理人
代理人只是传达意思,但是没有实际功能,所以代理人要做的是,通过接口将被代理人的意思传达给第三方。

工厂模式

为什么有了简单工厂模式还要出现工厂模式?

工厂模式相对于简单工厂模式,简单工厂模式的优点在于,工厂模式更加符合软件开发中的封闭原则。

因为简单工厂模式,在选择应用那种方法的类中,也就是工厂类。当根据客户需要,我们要添加新的功能的时候,我们需要在工厂类这个封闭的代码块中添加新的代码和功能,这就可能导致我们的程序在添加和更改代码之后,出现错误。所以为了保持代码的良好的封闭性,出现了工厂模式。

工厂模式与简单工厂模式的区别

共产模式相对于简单工厂模式,他们之间最重要的区别在于工厂类;
在简单工厂中,工厂类是一个封闭的单一整体。而在工厂模式中,工厂模式将工厂分成两部分。
第一部分:工厂类接口
这里的接口的作用是定义一个方法,主要是将各个分散的工厂链接起来。就好像集团,集团下面有各种分公司,各分公司都有自己的功能,但是他们都听命于董事会。虽然董事会没有各个公司的生产能力,但是董事会是指导分公司发展的重要核心。所以集团下面的各个分公司通过董事会链接成一个整体。
第二部分:各个工厂
这里的工厂是指,调用各个功能的,工厂类的子类,也就是工厂类接口的实现类。这些类通过调用来实现工厂类接口的功能。

对于工厂类我总觉的有些多余,直接将功能写到工厂类子类中不就行了,为啥还要这么麻烦,这样也不违反封闭原则,要添加新功能的时候,直接添加工厂类子类,然后在子类中添加功能就行了。
为啥还要添加功能类之后,还有在工厂类中添加一个工厂类子类,然后让该工厂类子类调用添加的功能类。
这又不是代理模式,也不用考虑安全和隐藏什么的吧?
希望博友能够解答我的疑惑。

发布了64 篇原创文章 · 获赞 15 · 访问量 7287

猜你喜欢

转载自blog.csdn.net/weixin_42263618/article/details/89918609