大话设计模式 一 简单工厂模式

本文深入解析简单工厂模式,一种常见的类创建型模式。通过实例详细介绍了模式的角色、职责及其实现方式,展示了如何通过工厂类创建具有共同父类的具体实例,优化软件体系结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

               

大话设计模式(一)简单工厂模式

      今天主要讲解简单工厂模式即静态工厂设计模式。

      其中,简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

简单工厂模式

包含的角色及其职责

      1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
      2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
      3.具体产品(Concrete Product)角色 简单工厂模式所创建的具体实例对象。

UML图


优缺点

           简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。违背了OCP(开放-封闭原则,即对扩展开放,对修改封闭。开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以提升软件的可维护、可扩展、可复用、灵活性好。) 在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。

            不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不很好。 示例图如图1-1所示:

示例代码

package cn.edu.ujn.designpattern;interface Fruit{ // 种植  public void plant(); // 生长  public void grow(); // 收获  public void harvest();}class Apple implements Fruit{ @Override public void grow() {  System.out.println("Apple is growing."); } @Override public void harvest() {  // TODO Auto-generated method stub   } @Override public void plant() {  // TODO Auto-generated method stub   } }class Strawberry implements Fruit{ @Override public void grow() {  System.out.println("Strawberry is growing."); } @Override public void harvest() {  // TODO Auto-generated method stub   } @Override public void plant() {  // TODO Auto-generated method stub   } }class FruitFactory{ public static Fruit creatFruit(String fruitName){  Fruit fruit = null;  switch (fruitName) {  case "apple":   fruit = new Apple();   break;  case "strawberry":   fruit = new Strawberry();   break;  default:   break;  }  return fruit; }}public class SimpleFactory { public static void main(String[] args) {  Fruit fruit = FruitFactory.creatFruit("apple");  fruit.grow(); }}

参考资料

1.http://www.cnblogs.com/zhouqiang/archive/2012/07/20/2601365.html

2.http://www.cnblogs.com/forlina/archive/2011/06/21/2086114.html

美文美图




           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值