《大话设计模式》—— 读后感(8)雷锋依然在人间——工厂方法模式

来源:互联网 发布:数据库中各表的结构 编辑:程序博客网 时间:2024/05/19 00:09

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。(摘抄)


工厂方法模式和简单工厂模式都是用于去创建新的类,但是工厂方法模式传承了简单工厂模式封装对象创建的过程,同时也改掉了简单工厂模式违背开放——封闭原则的缺点。

简单工厂模式,如果需要生产/去掉一个子类的话,那么需要在SimpleFactory类中修改 switch case 语句,所以违背了开放——封闭原则。

工厂方法创建对象是通过子工厂来创建,所以添加或删除子类的话是不需要改变原有的代码的。

class Factory{public Product create() {// TODO Auto-generated method stubreturn null;}}class AFactory extends Factory{public Product create() {// TODO Auto-generated method stubreturn new AProduct();}}class BFactory extends Factory{public Product create() {// TODO Auto-generated method stubreturn new BProduct();}}class Product{public void domethod() {// TODO Auto-generated method stub}}class AProduct extends Product{public void domethod() {// TODO Auto-generated method stub}}class BProduct extends Product{public void domethod() {// TODO Auto-generated method stub}}//新增类class CFactory extends Factory{public Product create(){return new CProduct();}}class CProduct extends Product{public void domethod(){}}public static void main(){Factory factory = new AFactory();Product product = factory.create();product.domethod();//新增一个类的话,那么只需要添加,而不需要修改原有代码,因为生产类的判断交给了客户端factory = new CFactory();Product newP = factory.create();newP.domethod();}

工厂方法模式差不多也就这样,还是那句话实际使用中必须活学活用,多种模式结合出来的四不像模式,也许才是正确的使用方法。。。

话说《大话》的例子越来越扯了。。。感觉解释还是蛮清楚,就是例子有点蛋疼,但是我也还蛮佩服作者,这样子也可以圆过来。。。


好希望自己把这本书看完之后,可以去看下那本Gof写的原版的设计模式,正好提升一下英文水平

0 0
原创粉丝点击