抽象工厂方法模式适用前提:1 当程序中的对象可以被划分为产品族和产品等级结构2 产品族可以增加,产品等级是稳定的不修改抽象工厂方法模式是针对产品族进行生产产品,如下图所示:产品族:美国工厂、日本工厂、中国工厂产品等级:苹果香蕉、梨抽象工厂模式代码实现如下:package mainimport "fmt"//---抽象层---type AbstractApple interface { Sh
简单理解可以理解为: 工厂模式=简单工厂模式+开闭原则工厂化模式标准类图如下:前章的简单工厂模式类图的工厂模式类图改造如下:工厂跟简单工厂的区别在于把之前的一个工厂抽象为一个抽象工厂,抽象工厂拥有一个抽象的生产水果的方法,返回的是一个抽象的水果类,每个具体的工厂生产具体的水果。业务层只需要跟抽象的水果和抽象的工厂进行交互。工厂化模型代码实现:package mainimport "fmt"// -
简单工厂模式并不属于GoF的23种设计模式,他是开发者自发认为的一种非常简易的设计模式,其职责如下:工厂角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。抽象产品角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。具体产品角色:简单工厂模式所创建的具体实例对象。简单工厂的实现:水果类是抽象的产品,而苹果类、香蕉类、梨
里氏代换LSP :任何抽象类(interface接口)出现的地方都可以用它的实现类进行替换,实际就是虚拟机制,语言级别实现面向对象功能。能用实例和接口的尽可能抽象成接口,然后用子类来实现。依赖倒转原则DIP: 依赖于抽象(接口),不要依赖具体实现(类),也就是针对接口编程。耦合度极高的业务实现:package mainimport "fmt"//司机张三 李四,汽车奔驰 宝马//1 张3 开奔驰/
LoD(Law of Demeter,LoD)一个类应当对其他对象尽可能少的了解,从而降低各个对象之间的耦合,提高系统的可维护性。例如在一个程序中,各个模块之间相互调用时,通常会提供一个统一的接口来实现。这样其他模块不需要了解另外一个模块的内部实现细节,这样当一个模块内部的实现发生改变时,不会影响其他模块的调用。(黑盒原理)如下三个市民需要买房,每个市民需要对每个房子都去了解(业主是谁,房子多大,
CRP: 如果使用继承,会导致父类的的任何变换都可能影响到子类的行为。如果使用对象组合,就降低了这种依赖关系。对于继承和组合,优先使用组合如下图所示,中间的猫咪只需要继承黄猫的睡觉方法,若此时采用继承,则可能导致继承到黄毛的父类恐龙的所有方法,增加了代码复杂度。本身只需要添加一个睡觉的方法,却继承了其所有父类的方法。一般不建议用继承去添加新的类或者添加新的方法。同时也降低了模块与模块间的依赖关系。
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号