php,java实现抽象工厂模式
来源:互联网 发布:手机电影拍摄软件 编辑:程序博客网 时间:2024/06/07 21:11
概念理解
抽象工厂模式:生产出不同业务品种的不同业务分类,强调的是每个不同品种下的分类,而他的生产类中是按照业务分类来区别的,就像《设计模式之禅》举的例子,有奔驰车和宝马车,这个车强调的就是业务品种,要生产车门(车门就是业务分类),但是车门分为左侧车门个右侧车门。估计看到这个定义会不太理解,但通过阅读代码在回头看,就会很好理解。
类图
代码实现
1.java
产品A抽象类
public abstract class AbsProductA { public void commonFunction(){} public abstract void doSomething();}
产品B抽象类
public abstract class AbsProductB { public void commonFunction(){} public abstract void doSomething();}
A产品分类1实现类
public class ProductA1 extends AbsProductA { @Override public void doSomething() { System.out.print("A1"); }}
A产品分类2实现类
public class ProductA2 extends AbsProductA { @Override public void doSomething() { System.out.print("A2"); }}
B产品分类1实现类
public class ProductB1 extends AbsProductB{ @Override public void doSomething() { System.out.print("B1"); }}
B产品分类2实现类
public class ProductB2 extends AbsProductB{ @Override public void doSomething() { System.out.print("B2"); }}
工厂抽象类
public abstract class AbsCreater { public abstract AbsProductA createProductA(); public abstract AbsProductB createPriductB();}
分类1工厂类
public class Creater1 extends AbsCreater { @Override public AbsProductA createProductA() { return new ProductA1(); } @Override public AbsProductB createPriductB() { return new ProductB1(); }}
分类2工厂类
public class Creater2 extends AbsCreater { @Override public AbsProductA createProductA() { return new ProductA2(); } @Override public AbsProductB createPriductB() { return new ProductB2(); }}
2.php
abstract class AbsProductA{ public function commomFunction(){} public abstract function doSomething();}abstract class AbsProductB{ public function commonFunction(){} public abstract function doSomething();}class ProductA1 extends AbsProductA{ public function doSomething() { echo 'A1'; }}class ProductA2 extends AbsProductA{ public function doSomething() { echo 'A2'; }}class ProductB1 extends AbsProductB{ public function doSomething() { echo 'B1'; }}class ProductB2 extends AbsProductB{ public function doSomething() { echo 'B2'; }}abstract class AbsCreater{ public abstract function createA(); public abstract function createB();}class Creater1 extends AbsCreater{ public function createA() { return new ProductA1(); } public function createB() { return new ProductB1(); }}class Creater2 extends AbsCreater{ public function createA() { return new ProductA2(); } public function createB() { return new ProductB2(); }}$creater1 = new Creater1();$creater1->createA()->doSomething();$creater1->createB()->doSomething();$creater2 = new Creater2();$creater2->createA()->doSomething();$creater2->createB()->doSomething();
0 0
- php,java实现抽象工厂模式
- php实现抽象工厂模式
- 抽象工厂模式java实现
- Java 实现抽象工厂模式
- Java 实现抽象工厂模式
- PHP实现抽象工厂设计模式
- php 抽象工厂模式
- PHP抽象工厂模式
- PHP 抽象工厂模式
- php抽象工厂模式
- php抽象工厂模式
- 抽象工厂模式(java语言实现)
- PHP和golang实现设计模式-抽象工厂模式
- java抽象工厂模式
- java抽象工厂模式
- java 抽象工厂模式
- Java抽象工厂模式
- java 抽象工厂模式
- 转接IC NCS8801S:RGB/LVDS转EDP芯片
- 算法训练 和为T
- linux命令行与shell脚本大全_第十三章_处理用户输入
- 同步(Synchronous)/异步(Asynchronous)
- 附录A:Windows编程入门
- php,java实现抽象工厂模式
- java基础学习(五)访问权限控制
- 基于XMPP协议(openfire服务器)的消息推送实现
- 循环中的闭包
- Poweroj 1194(dp背包问题)
- A Boring Game
- Openfire 用户离线、断线 及心跳检测
- Hadoop组件配置
- 通过netcraft查询一个网站的服务信息