23种设计模式之创建型模式——工厂模式

概述: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactorryMethod使一个类的实例化延迟到其子类。


使用性:

1、当一个类不知道它所必须创建的对象的类的时候。

2、当一个类希望由它的子类来指定它所创建的对象的时候。

3、当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。


举例:


工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现图形类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来

进行。你想要加图像,本来是改工厂类的,而现在是修改客户端。

工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封闭对象创建过程的优点。

//图形工厂

interface IFactory

{

Graph CreateGraph();

}

//图形的长方形工厂

class RectangleFactory:IFactory

{

public Graph createGraph()

{

return new Rectangle();

}

}

//图形的圆形工厂

class RoundnessFactory:IFactory

{

public Graph createGraph()

{

return new Roundness();

}

}

//图形的三角形工厂

class TriangleFactory:IFactory

{

public Graph createGraph()

{

return new Triangle();

}

}

//图像抽象类

Interface Graph

{

public void name();

}

//三角形

class Triangle:Graph

{

public void name()

{

cout<<"三角形";

}

}

//长方形,圆形如上写法//客户端调用的时候只需要这样就可以了

//工厂方法模式

IFactory factory =new RectangleFactory()//想要什么图形就创建什么样的工厂;

Graph graph=factory.CreateGraph();

 graph.name();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值