`
wojiaolongyinong
  • 浏览: 74545 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

浅谈简单工厂设计模式

阅读更多

                                                             简单工厂设计模式
    核心:接口
     思想:封装隔离
  
    其实可以说,简单工厂设计模式就是总结出上面这两个方面,但是远远不是这两个这么简单。首先,在说明简单工厂设计模式的概念之前,来想想接口吧。
   接口:里面定义的方法都是抽象的方法,定义的变量都是常量
   我们通常实现接口,来实现里面规定的抽象方法,那么实现类的外观就是这个接口所提供,我们之前使用最多的是接口关于多态性的部分。比如在之前的监听器设计模式中,对于通信项目来减弱数据层与表现层耦合性,我们就是利用了接口的这一特性。
   现在这样想一下,我们编写一个类,实现了一个接口,相当与我们实现了一份契约,可以说这个接口限定了我们对外所能调用的方法(当然也可以编写不属于接口里面的方法, 但是接口规定了至少向外提供的方法),那么对于这个类就产生了约束,对于不同的实现类,相同的方法,可以有不同的实现。
   其实现在我们就可以感受到,接口的思想既是“封装隔离”,我们只要接口对外的方法调用不变,我们对于内部可以进行任何改动而无需修改调用,也就是我们的程序具有一种组装性。
 
 下来看一下例子吧,有一个感性的认识:
 1.假如有一个接口,如下:

/**
*一个表示可以移动的对象接口
*移动的对象都必须有一个移动的方法move(String type)
*其中的参数可以告诉怎么移动
*/
public interface MoveEntry{
         public void move(String type);
}

 
  2.现在造一辆车,实现接口
 

public class Car implements MoveEntry{
         public void move(String type){
	      System.out.println("现在汽车在跑" + type);
          }
}

 
 3.现在一个客户不知道想要什么交通工具,只想看一下这个可以移动的对象移动的怎么样

public class Client{
         public static void main(String[] args){
	      MoveEntry entry = new Car();
	      entry.move("加速!");
          }
}

 
         在我们之前使用接口的过程中,我们一般使用的过程都是这样的,但是我们从上面说的接口的思想"封装隔离"来看,上面的实现过程没有达到我们想要的效果,因为客户已经知道,是一辆车在跑,但是他不想知道是什么,只要看到移动的效果就好,那么我们就不可以这样了。
       现在就是简单工厂设计模式上场的时候了,这样描述一下吧,我们需要一个工厂造出我们需要的对象,我们不关心工厂里面怎么实现,而且我们可以将工厂封装起来,使得只可以客户端进行方法的调用,那么这样就可以将客户端和实现接口之间的类用一个工厂进行隔离,减少了实现类与客户端之间的耦合性。下来就可以看看简单工厂如果处理上面的情况:
       1.接口仍然是上面的那个接口,也是那个实现Car的类不变,只是增加一个工厂类

public class Factory{
         public static MoveEntry createMoveEntry(){
	      return new Car();
         }
}

 
  2.那么现在客户端调用就可以这样进行了
 

public class Client{
         public static void main(String[] ahrs){
	        MoveEntry entry = Factory.createMoveEntry();
                entry.move("加速吧!");
          }
}

 
         由上面我们就可以知道,现在客户端完全不用知道是谁实现了接口,只需要调用工厂里面的方法,获取对象即可,这样就实现了"封装隔离",也许我们会问,无非就是将实现移动到工厂类中,但是我们完全可以将工 厂类封装起来,不对外进行显示,只提供调用方法,这样就减弱了实现类与客户端之间的耦合性。
       上面算是一个基本的简单工厂设计模式已经完成,可以有一点感性的认识,但是简单工厂设计模式绝不仅仅是这样,它可以提供我们想实现封装的任何类,而且可以根据我们传入的参数进行有选择性的实现返回,我们可以将每次新的实现写到配置文件中,在工厂中读取配置文件反射生成实现类是一种更好的扩展方法。这些我们都可以在项目中去使用,来使我们的项目更完美!

 

         看着这一篇博客,再看一下上一次的时间,感觉空间充满了灰尘,其中好几次博客已经写下来,但是存活时间不会超过10秒钟,删掉。。。。。自己也不知道为什么,现在总想要一种答案,不是对于技术的,只是对于这个阶段的,一直在看人物传记希望给自己一份想要的答案,但是却在寻找中让手边的事拉了下来,或许每个人都有这样一段时间吧。继续寻找答案,但是做好技术!

0
1
分享到:
评论

相关推荐

    浅谈工厂模式

    本文将深入探讨三种重要的设计模式:简单工厂模式、工厂方法模式和抽象工厂模式,这些模式都属于创建型设计模式,主要关注对象的创建过程,旨在提高代码的可扩展性和灵活性。 首先,我们来看简单工厂模式。这种模式...

    浅谈C#设计模式之工厂模式

    浅谈C#设计模式之工厂模式 本文主要介绍了C#设计模式中的一种重要模式:工厂模式。工厂模式是一种创造型模式,提供了一种创建对象的方式,旨在解决继承和多态性的问题。 工厂模式的定义 工厂模式是指定义一个用于...

    C#面向对象设计模式纵横谈-创建型模式

    在编程领域,面向对象设计模式是一种经过验证的解决常见问题的方法论,它们是软件开发中的最佳实践。创建型设计模式是面向对象设计模式的一种类型,主要关注对象的创建过程,旨在提供灵活、可扩展和易于管理的对象...

    漫谈设计模式代码

    《漫谈设计模式》这本书深入浅出地介绍了多种设计模式,通过代码实例帮助读者理解和应用这些模式。在这个压缩包“ramblingonpatterns-1.0”中,你将找到书中的代码示例,它们覆盖了各个章节的关键知识点。 1. **...

    设计模式与现实生活,形象,生动

    ### 设计模式与现实生活 设计模式是在软件开发过程中对常见问题的一种解决方案的总结,它能够帮助开发者更好地组织代码,提高程序的复用性、灵活性和扩展性。本文将结合生活中的例子来形象地阐述几种常见的设计模式...

    软件体系结构Builder模式浅谈

    Builder模式是一种设计模式,主要目的是将复杂对象的构建与表示分离,使得构建过程可以独立于表示进行。在软件工程中,当需要创建的对象具有多个可变组成部分时,Builder模式能够帮助我们构造这些对象,同时保持构建...

    Java 设计模式

    - **从招式与内功谈起**:这部分内容旨在通过比喻的方式,帮助读者理解设计模式的本质及其在实际开发中的应用价值。招式指的是具体的编码技巧,而内功则是对设计模式背后的原理的理解。 #### 三、面向对象设计原则 ...

    C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在C#中,原型模式还可以与其他设计模式结合使用,如工厂模式,可以将原型模式作为工厂方法的一部分,使得用户能够请求特定类型的对象实例,而无需了解如何创建它们。 总的来说,原型模式在C#中是一个非常实用的设计...

    C#面向对象设计模式纵横谈(5)

    在C#中,设计模式不仅限于原型模式,还有其他如单例模式、工厂模式、建造者模式等,它们都是面向对象设计中的重要组成部分。理解并灵活运用这些模式,能够提高代码的可读性、可维护性和可扩展性,从而提升软件开发的...

    浅谈机械设计制造及其自动化的发展方向.rar

    《浅谈机械设计制造及其自动化的发展方向》这篇文章深入探讨了机械设计制造及其自动化领域的未来趋势。机械设计制造及其自动化是现代工业生产的核心技术之一,它涵盖了机械工程、电子技术、计算机科学等多个学科,...

    design-pattern-java.pdf

    基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...

    C#视频-面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在本课程中,我们将深入探讨C#编程中的一个重要设计模式——Prototype原型模式,它是创建型设计模式的一种。原型模式主要用于简化实例化过程,通过复制已有对象来创建新对象,而不是直接通过构造函数来创建。这一...

    java之浅谈深说--教你如何成长

    1. **设计模式**:掌握常见的设计模式,如单例模式、工厂模式等,可以帮助你写出更优雅的代码。 2. **性能优化**:学习如何对Java应用进行性能分析和调优。 3. **云原生技术**:随着云计算的发展,掌握Docker、...

    浅谈变频器的相关问答

    - **应用场景**: 广泛应用于工业自动化领域,如工厂生产线、楼宇自动化系统、水泵控制、风机调速等。 #### 二、PWM与PAM的区别 - **PWM(脉冲宽度调制)**: 按照一定的规律改变脉冲列的脉冲宽度来调节输出量和波形...

    浅谈教育信息化对幼儿发展的作用.docx

    比如在“小老鼠的房间”游戏中,幼儿可以设计出形状各异的小老鼠之家,或者在“弗兰克”的服饰工厂活动中,用不同方法为弗兰克设计各种新颖的服装。这些活动不仅能够培养幼儿的创新意识,还能锻炼他们的动手能力和...

    深入浅出谈ASP.NET三层架构

    ASP.NET三层架构是一种常见的软件设计模式,它将应用程序分为三个主要部分:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种架构有助于提高代码的可维护性、可扩展性和可重用性。以下是对这个主题的详细...

    浅谈智能制造背景下机器与人的关系.pdf

    在这个背景下,机器与人的关系发生了深刻变化,不再仅仅是简单的替代关系,而是转向了更加紧密的协同合作。 1. **智能制造的内涵与特征** - 智能制造不仅涉及到自动化生产线,更重要的是实现人、设备、产品和服务...

Global site tag (gtag.js) - Google Analytics