设计模式:工厂模式,解除耦合的利器

  • 时间:
  • 浏览:42
  • 来源:苹果资源网 - 专注共享南街博客技术

工厂类建好以前,亲们就可不都可以 实例化工厂类,并调用 produce 法律办法来创建对应的实例对象,

3、屏蔽产品类。产品类的实现怎样才能变化,调用者也有 都要关心,只需关心产品的接口,只要接口保持不变,系统中的上层模块就后会存在变化。

定义另另另一个接口和实现类,建立另另另一个工厂类哪此实现类进行实例的创建。

如上所示,将会都要添加新的产品,如排球,亲们就多写另另另一个工厂类即可,但是就后会把所有的业务都耦合到另另另一个工厂类中了,用关系图表示如下:



最后,总结一下工厂模式的优点吧,

测试代码

解答例如 问题报告 前,亲们先来了解哪此是工厂模式。

2、扩展性优秀,将会增加另另另一个产品类,只需增加另另另一个对应的工厂类。

先创建另另另一个工厂的接口

当然缺点也很明显,但是工厂类集中了所有实例的创建逻辑,将会增加业务就要多出相应的工厂法律办法,不仅代码将会变得臃肿,也容易违反GRASPR的高内聚的责任分配原则

《设计模式之禅》

4、工厂模式是典型的解耦框架,高层模块只都要知道产品的抽象类,某些的实现类也有 都要关心,符合迪米特法则,符合依赖倒置原则,符合里氏替换原则。

工厂模式是使用频率很高的例如设计模式,在面试中也总爱问到,今天亲们就来学习它。

而且 ,创建另另另一个工厂类,可不都可以 用于生产篮球将会足球,

工厂模式真是也称创建模式,是用于创建对象的例如法律办法。本质上但是用工厂法律办法来代替new实例化对象。

具体的产品接口和实现类还是复用上边的代码,亲们只需关注工厂法律办法的逻辑即可,

这但是简单工厂模式的基本实现,用关系图来表示但是:



例如 模式的优点是代码简单,有益于根据具体的参数返回对应的实例对象。

亲们用球来举例,定义另另另一个基本的接口Ball,和另另另一个抽象法律办法Play (玩),

参考:

举个例子:亲们在编写代码的以前,在另另另一个A类中通过new的法律办法实例化了类B,没法A类和B类之间就存在耦合,将会以前修改了B类的代码和使用法律办法,例如都要在构造函数中传入参数,没法A类也就都要跟着修改了,另另另一个类的依赖将会影响不大,但若有多个类依赖了B类,没法例如 工作量将会相当的大,这无疑是件非常痛苦的事。例如 情况表下,亲们都要把创建实例的工作单独分离,与调用方解耦,也但是使用工厂法律办法创建实例的工作封装起来。但是亲们在都要调用对象的以前就不都要关心哪此繁复的实例化问题报告 。

工厂模式可分为两类:简单工厂模式和工厂模式。

结果输出:打篮球~~~

创建另另另一个篮球的类和另另另一个足球的类,并实现该接口,

而且 创建对应业务的工厂类

又称多态性工厂模式,是对简单工厂模式的改进。工厂模式中,另另另一个子类对应另另另一个工厂类,哪此工厂类都实现了另另另一个工厂接口。这离米 把另另另一个简单工厂类拆分成多个工厂,但是代码就后会都耦合在同另另另一个类里了。

1、良好的封装性,代码特性清晰,调用者只需知道产品的类名即可,不都要知道创建对象的过程,降低代码间的耦合。

输出结果是: