工厂模式-抽象工厂
来源:互联网 发布:淘宝店铺导航代码大全 编辑:程序博客网 时间:2024/05/16 20:39
1.产品类
1.1产品的统一接口
1.2 A产品和B产品2.工厂类
2.1统一的工厂类
/** * @Desc:获取产品的统一接口 * @author zy * @date 2016年6月21日下午4:32:15 */public interface Factory {/** * @Desc:获取具体的产品 大件 * @return: * @author:zy * @version: 2016年6月21日 下午4:29:18 */ public Product getBigProduct(); /** * @Desc:获取具体的产品 小件 * @return: * @author:zy * @version: 2016年6月22日 下午2:25:11 */ public Product getSmallProduct();}
2.2 pen工厂和book工厂类
/** * @Desc:生产本子的工厂类 * @author zy * @date 2016年6月21日下午4:36:42 */public class BookFctory implements Factory{ @Overridepublic Product getBigProduct() {return new BigBook();}@Overridepublic Product getSmallProduct() {return new SmallBook();}}/** * @Desc:大号本子 * @author zy * @date 2016年6月21日下午4:38:52 */class BigBook implements Product{@Overridepublic void getDetailProduct() {System.out.println("我是大号笔记本");}}/** * @Desc:小号本子 * @author zy * @date 2016年6月21日下午4:38:59 */class SmallBook implements Product{@Overridepublic void getDetailProduct() {System.out.println("我是小号笔记本");}}
/** * @Desc:生产笔的工厂类 * @author zy * @date 2016年6月21日下午4:36:21 */public class PenFactory implements Factory{@Overridepublic Product getBigProduct() {return new BigPen();}@Overridepublic Product getSmallProduct() {return new SmallPen();}}class BigPen implements Product{@Overridepublic void getDetailProduct() {System.out.println("我是大号笔");}}class SmallPen implements Product{@Overridepublic void getDetailProduct() {System.out.println("我是小号笔");}}
3.测试
/** * @Desc: * 需求描述:假如M是一家公司,初创阶段,只有生产book的工厂,经过良好的运营,要增加产业链-笔工厂。 * 如果我们还是按照静态工厂,我们就得在simpleFactoryStaic中修改代码,显然,这样是很不友好的(违背开闭原则)。 * 解决思路:我们可以把工厂类抽象出来,(和product一样)这样我们增加一个工厂,只需要增加一个.java的文件即可 * @author zy * @date 2016年6月22日下午2:30:27 */public class M { public static void main(String[] args) { Factory bookFactory = new BookFctory(); Product bookProduct = bookFactory.getBigProduct(); bookProduct.getDetailProduct(); }}
tips:
简单工厂是处理批量生产产品的设计模式,但是,假如我们有了一个新系列的产品,还是在原有简单工厂里添加,明显违背了单一职责原则。
为了更好的分类管理生产,我们完全可以新开一个工厂,把工厂类给抽象一层(简单工厂,是把产品类抽象一层),按照这个思路,理论上你可
以再在工厂类的上一层再次抽象一层,哈哈,是不是有点狠
1 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- php 的常用函数FUNCTION
- 《人人都是产品经理》阅读笔记
- linux下导入、导出mysql数据库命令
- 获取版本名称 VersionName
- Android Studio上gradle配置Lambda表达式
- 工厂模式-抽象工厂
- 添加一些语言后,切换到该语言手机自动重启,添加ICU资源
- Longest Substring Without Repeating Characters Leetcode Python Java
- C语言运算符优先级
- 高效管理者每天都要坚持的8个工作方法
- 函数重载
- pm2 自定义log, pid 等日志文件位置
- Bluetooth 4.0之Android 讲解
- linux/unix下svn自动更新post-commit hook failed (exit code 255)