C#——工厂模式

 

概念设计模式

工厂模式是用工厂方法代替new操做的一种模式。工厂方法封装了多个相关联类的new方法,每次实例化这些类的时候不须要new屡次,只须要调用工厂类的对应方法便可实例化这些类,而且是经过使用一个共同的接口来指向新建立的对象。框架

分类spa

工厂模式分为三种: 简单工厂、工厂方法、抽象工厂;设计

简单工厂对象

用来生产同一等级结构中的任意产品。(不支持拓展增长产品)继承

简单工厂模式分为三种接口

一、工厂类角色:这是本模式的核心,含有必定的商业逻辑和判断逻辑,根据逻辑不通,产生具体的工厂产品。产品


二、抽象产品角色:它通常是具体产品继承的父类或者实现的接口。扩展


三、具体产品角色:工厂类所建立的对象就是此角色的实例。开源框架

工厂方法

用来生产同一等级结构中的固定产品。(支持拓展增长产品) 

工厂方法模式的组成:

1.抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。


2.具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以建立对应的具体产品的对象。


3.抽象产品角色:它是具体产品继承的父类或者是实现的接口。


4.具体产品角色:具体工厂角色所建立的对象就是此角色的实例。

抽象工厂

用来生产不一样产品族的所有产品。(不支持拓展增长产品;支持增长产品族)  

抽象工厂模式的用意为:给客户端提供一个接口,能够建立多个产品族中的产品对象。
并且使用抽象工厂模式还要知足一下条件:
1.系统中有多个产品族,而系统一次只可能消费其中一族产品


2.同属于同一个产品族的产品以其使用。

总结:

工厂方法模式是简单工厂模式的延伸,它继承了简单工厂模式的优势,同时还弥补了简单工厂模式的不足。

工厂方法模式是使用频率最高的设计模式之一,是不少开源框架和API类库的核心模式。

在工厂方法模式中,工厂方法用来建立客户所须要的产品,同时还向客户隐藏了哪一种具体产品类将被实例化这一细节,用户只须要关心所需产品对应的工厂,无须关心建立细节,甚至无须知道具体产品类的类名。

基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它可以让工厂能够自主肯定建立何种产品对象,而如何建立这个对象的细节则彻底封装在具体工厂内部。工厂方法模式之因此又被称为多态工厂模式,就正是由于全部的具体工厂类都具备同一抽象父类。

使用工厂方法模式的另外一个优势是在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其余的具体工厂和具体产品,而只要添加一个具体工厂和具体产品就能够了,这样,系统的可扩展性也就变得很是好,彻底符合“开闭原则”。

相关文章
相关标签/搜索