概述
来由:
as3中许多类采用类似这样的代码:
Client 类创建了Product类的一个实例,并将它赋给变量object.代码的主要特征就是Client类和product类联系十分紧密.但问题是如果现在要更改Product的内容比如接受参数等,那么Client也要跟着改变,如果这种类很多,那么劳动量将比较大.
工厂模式的提出就是降低这两个类之间的耦合度,通过设置一个中间过渡类(接口或者抽象类)来实现,中间过渡类的作用就是在客户端(这里指Client)不指定具体产生哪个对象类的情况下访问对象.
简单工厂:
简单工厂可以通过判断传进来的产品类型来返回特定的产品,但是这段代码可重用性和灵活性太低,主要表现在如果客户添加一种新的产品类型的话,我们就需要修改原有的代码来扩增if else 判断,但这违反了OOP中的open-closed原则:类和方法的代码应该易于扩展,但不允许修改.
工厂方法模式的主要优点就是很好的扩展性
类图(这应该是uml吧,第一次接触,乱画的)
图中Creator和Product类不是具体的类,而是定义为了接口.一个单纯的接口不会实现任何一个接口中声明的方法,但是还有一种特殊的接口叫抽象接口,抽象接口能够实现提供方法的默认的实现方式,也可以讲抽象接口叫做抽象类,但不能将抽象接口实例化,也不能被其他类继承.
Creator类是一个抽象类,里面定义了一个工厂方法(factoryMethod),factoryMethod是一个没有实现的抽象方法,由Crerator的子类提供(ConcreteCreator)工厂方法的具体实现,在Creator类里还定义并实现了一个public的方法(operation)用这个方法来调用工厂方法.
一个例子
之前的准备,新建一个example包,包外一个Main类
产品类
产品类由一个产品接口以及具体实现接口的产品组成
不多说,贴代码
创建类,用于创建各中产品
客户类,发送生产命令
一个小例子完了,总结下主要用到的技巧
1:使用一个公共接口来定义一个抽象方法,然后在子类中重写;
2:通过基类来创建子类并调用基类的方法;
写一个要学的是单例模式,听说很重要的一个设计模式 ^_^
最后
以上就是含蓄羊为你收集整理的AS3设计模式之工厂模式的全部内容,希望文章能够帮你解决AS3设计模式之工厂模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复