tp5 网站开发,自己写代码做网站要什么技术,如何选择宜昌网站建设,广安广告公司说明
抽象工厂#xff08;Abstract Factory#xff09;模式是一种工厂模式。用一个接口类中的不同方法创建不同的产品。
为了便于理解#xff0c;先打个比方#xff1a;
将老虎、狮子、猴子比作三个抽象产品的接口类#xff0c;也就是有3个产品等级。 老虎又分动物园的…说明
抽象工厂Abstract Factory模式是一种工厂模式。用一个接口类中的不同方法创建不同的产品。
为了便于理解先打个比方
将老虎、狮子、猴子比作三个抽象产品的接口类也就是有3个产品等级。 老虎又分动物园的老虎、野生的老虎 — 比作具体产品 狮子又分动物园的狮子、野生的狮子 — 比作具体产品 猴子又分动物园的猴子、猴子的猴子 — 比作具体产品
动物园的动物比作一个产品族野生的动物比作另外一个产品族共2个产品族。
抽象工厂模式就是用一个接口中的三个方法分别创建老虎、狮子、猴子。 具体工厂实现抽象工厂对应有两个具体工厂动物园具体工厂、野生具体工厂。 动物园具体工厂生产动物园老虎、动物园狮子、动物园猴子。 野生具体工厂生产野生老虎、野生狮子、野生猴子。
概况起来说
有两个产品族动物园的动物、野生动物。每个产品族中有三个产品等级老虎、狮子、猴子。
抽象工厂模式涉及如下角色
抽象工厂Abstract Factory角色它一般是一个接口类或者一个抽象类。其中声明了生产一族产品的所有方法。产品族中有几个产品等级就有几个方法。与具体的业务逻辑无关。具体工厂类Concrete Factory实现抽象工厂的方法。有几个产品族就有几个具体工厂类。客户端直接调用具体工厂类创建具体的产品。与具体的业务逻辑有关。抽象产品Abstract Product角色一般是一个接口或者抽象类是具体产品的父类。具体产品要实现抽象产品。具体产品Concrete Product角色实现抽象产品是客户端最终需要的产品。
代码示例
以上面打的比方来举例。
定义抽象产品
老虎接口
package com.thb;public interface Tiger {}狮子接口
package com.thb;public interface Lion {}猴子接口
package com.thb;public interface Monkey {}定义具体产品
动物园老虎
package com.thb;public class ZooTiger implements Tiger {}动物园狮子
package com.thb;public class ZooLion implements Lion {}动物园猴子
package com.thb;public class ZooMonkey implements Monkey {}野生老虎
package com.thb;public class WildTiger implements Tiger {}野生狮子
package com.thb;public class WildLion implements Lion {}野生猴子
package com.thb;public class WildMonkey implements Monkey {}定义抽象工厂
package com.thb;public interface Factory {Tiger createTiger();Lion createLion();Monkey createMonkey();
}定义具体工厂
动物园工厂
package com.thb;public class ZooFactory implements Factory {Overridepublic Tiger createTiger() { return new ZooTiger();}Overridepublic Lion createLion() { return new ZooLion();}Overridepublic Monkey createMonkey() { return new ZooMonkey();}}野生工厂
package com.thb;public class WildFactory implements Factory {Overridepublic Tiger createTiger() { return new WildTiger();}Overridepublic Lion createLion() { return new WildLion();}Overridepublic Monkey createMonkey() { return new WildMonkey();}}