极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)

简介:

四个角色:抽象产品(Product)、具体产品(Concrete Product)、工厂(Creator)、客户端(Client) 

        抽象产品(Product):需要创建的各种产品的父类。这类产品有共同的接口。

        具体产品(Concrete Product):需要创建的具体对象。

        工厂(Creator):内部逻辑可以控制生成目标对象。

        客户端(Client):实例化工厂,然后工厂根据传入参数得到各种产品。调用产品实现不同功能。

 实现思路:首先将工厂实例化,然后使用工厂创建产品赋值给抽象产品的引用,然后通过抽象产品的公共接口调用具体产品的方法以实现功能。

类图: 

应用场景:苹果公司的工厂生产iphone 4、ipad 2、ipod nano 6。

分析:这里多种产品都可以运行,所以有一个公共方法,然后抽象为父类。

        下面我们在控制台程序去演示一下如何使用Simple Factory Pattern:

        一、抽象产品(Product):

 

 
  1. //抽象产品(Product) 
  2. abstract class Apple 
  3.     public abstract void Run(); 

        二、具体产品(Concrete Product):

 

 
  1. //具体产品(Concrete Product) 
  2. class Iphone : Apple 
  3.     public override void Run() 
  4.     { 
  5.         Console.WriteLine("iphone 4 开始运行!"); 
  6.     } 
  7.  
  8. //具体产品(Concrete Product) 
  9. class Ipad : Apple 
  10.     public override void Run() 
  11.     { 
  12.         Console.WriteLine("ipad 2 开始运行!"); 
  13.     } 
  14.  
  15. //具体产品(Concrete Product) 
  16. class IpodNano : Apple 
  17.     public override void Run() 
  18.     { 
  19.         Console.WriteLine("ipod Nano 6 开始运行!"); 
  20.     } 

        三、工厂(Creator):

 

 
  1. //工厂(Creator) 
  2. class AppleFactory 
  3.     public Apple CreateApple(string productName) 
  4.     { 
  5.         switch (productName.ToUpper()) 
  6.         {  
  7.             case "IPHONE"
  8.                 return new Iphone(); 
  9.             case "IPAD"
  10.                 return new Ipad(); 
  11.             case "IPODNANO"
  12.                 return new IpodNano(); 
  13.             default
  14.                 return null
  15.         } 
  16.     } 

        四、客户端(Client):

 

 
  1. //客户端(Client) 
  2. class Program 
  3.     static void Main(string[] args) 
  4.     { 
  5.         AppleFactory factory = new AppleFactory(); 
  6.         Apple iphone= factory.CreateApple("iphone"); 
  7.         iphone.Run(); 
  8.         Apple ipad = factory.CreateApple("ipad"); 
  9.         ipad.Run(); 
  10.         Apple ipodnano = factory.CreateApple("ipodnano"); 
  11.         ipodnano.Run(); 
  12.         Console.ReadLine(); 
  13.     } 

       如需源码请点击 SimpleFactoryPattern.rar 下载。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/827088

相关文章
|
9天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0
|
29天前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
6天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
4天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
11 1
|
6天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式
|
1月前
|
设计模式 编译器
解析器模式--设计模式
解析器模式--设计模式
17 0
|
1月前
|
设计模式 算法
构建器模式--设计模式
构建器模式--设计模式
17 0
|
1月前
|
设计模式
【设计模式】中介模式
【设计模式】中介模式
|
2月前
|
设计模式 Java 关系型数据库
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
48 1