说说设计模式~简单工厂模式(Factory)

简介:

 简单工厂模式Simple Factory根据提供给它的数据,返回一个类的实例。通常它返回的类都有一个公共的父类(或者接口对象)。

简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂。如数据库生产工厂就是简单工厂的一个应用。
         采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类 型,则需要修改工厂,不符合OCP(开闭原则)的原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。

下面是我实例中的类结构图,它有一个ICreate的公共接口,有一个方法叫Create,返回值为Void

其中公用的接口代码如下:(最后工厂的返回值类型)

1    /// <summary>
2         /// 简单工厂接口,返回值类型
3         /// </summary>
4         public interface ICreate
5         {
6             void Create();
7         }

而下面,分别用people和animal两个类去实现了ICreate接口,并实现了它的Create方法。

 1      /// <summary>
 2         /// 人类实现工厂接口
 3         /// </summary>
 4         public class People : ICreate
 5         {
 6 
 7             #region ICreate 成员
 8 
 9             public void Create()
10             {
11                 Console.WriteLine("创建人类");
12             }
13 
14             #endregion
15         }
16         /// <summary>
17         /// 动物实现工厂接口
18         /// </summary>
19         public class Animal : ICreate
20         {
21 
22             #region ICreate 成员
23 
24             public void Create()
25             {
26                 Console.WriteLine("创建动物");
27             }
28 
29             #endregion
30         }

而对于外界来说,会有另一个类去为外界提供服务,它们可以需要建立People或者Animal类型的实现,代码如下:

 1     public class CreateFactory
 2         {
 3             public static ICreate GeneratorCreate(string createName) { 
 4             switch (createName)
 5             {
 6                 case "People":
 7                     return new People();                   
 8                 case "Animal":
 9                     return new Animal();
10                 default:
11                     throw new NotImplementedException();                   
12             }
13         }

最后,在使用它时,直接使用CreateFactory.GeneratorCreate("类型条件名")即可生成你的类对象了。

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:说说设计模式~简单工厂模式(Factory),如需转载请自行联系原博主。

目录
相关文章
|
29天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
9天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
19 4
|
14天前
|
设计模式 消息中间件 Java
Java 设计模式:探索发布-订阅模式的原理与应用
【4月更文挑战第27天】发布-订阅模式是一种消息传递范式,被广泛用于构建松散耦合的系统。在 Java 中,这种模式允许多个对象监听和响应感兴趣的事件。
34 2
|
17天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
17天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
19天前
|
设计模式
设计模式(一)简单工厂模式
设计模式(一)简单工厂模式
14 0
|
29天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式
|
1月前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
22 0
|
2月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
55 0
|
4月前
|
设计模式 存储 算法
Java 设计模式最佳实践:三、行为模式
Java 设计模式最佳实践:三、行为模式
23 0