设计模式第二周(boolan)

前两种用的比较多

六。工厂方法模式(Factory Method)

接口抽象???指的是多态指针吗

面向接口的变成???一个对象类应该声明成对象或者接口

接口

15行依然是编译时的细节依赖

——解决:试图用某种方法返回对象

这样修改后依然是编译时依赖

想到==>虚函数是运行时依赖

把变化交给SplitterFactory这个未来

每个具体类都有对应的工厂——>多态指针就有了着落

注:此处是多态new

MainForm再也没有具体的依赖 此类以外的不用管

实际上  依赖变化没法消灭 只是把它赶到某个局部(把变化比作一只猫,应该想办法把它关进笼子里 而不是让他跳来跳去)

关键点:把实例化延迟

关键点:参数一致

七。抽象工厂(Abstract Factory)

任务假设:数据访问层;创建一系列对象

问题:只支持一种数据库==>对应的类型应该变化

设计:

这几个类都要有工厂
实际开发中具体类和具工厂应该放在两个不同文件去写

问题:会有不同数据库的类互相调用的情况

解决:把三个工厂合成一个

抽象工厂可以理解为家族工厂***

IDBFactor就是这个接口

IDBFactor负责创建一系列:IDBConection,IDBComond 无需提供具体类

蓝色:第一种变化 绿色:第二种变化
变化点不同系列

关键点:同一系列对象可依赖;(可以把工厂方法模式是抽象工厂的特例理解为)

八。原型模式(Prototype)

和factory method解决的问题一样;是其变体

合并工厂和业务抽象类

通过克隆(深克隆)自己来创建对象

下几个类同第一个

具体工厂也就不需要了

关键点:深克隆(浅克隆会改变原型对)

跟工厂方法的最大区别在于:用工厂模式创建对象只需要简单几个步骤,还是要考虑复杂的中间状态

你可能感兴趣的:(设计模式第二周(boolan))