现在的位置: 首页 > 综合 > 正文

白话java 设计模式 ,你一看就懂的

2014年11月10日 ⁄ 综合 ⁄ 共 1229字 ⁄ 字号 评论关闭

首先说的是用来构造对象的设计模式, 先说简单工厂模式。

    其实,很简单, 基本思想就是如何构造对象的问题了。 首先,是一个接口,在该接口下,可以有多个类; 那么这些类很可能在以后的程序中,会经常变动,比如,我现在是用的自行车类,那么等以后买了汽车,我就要换成汽车类了,而这些类都实现了交通工具这个接口。

  怎么样才能做到以后更换交通工具了以后,代码可以尽量的不改,通常采用的办法就是专门用一个类,即工厂类来负责这些交通工具类的创建, 在该类中,引用了一个交通工具接口,而且该类只有一个静态方法,该静态方法就是用来建造对象的,它根据传入的参数,该参数告诉该方法,要建造啥样子的对象,然后,该方法就根据要求,把对象造好,然后,通过定义的接口返回给客户端程序。这样的话,如果以后更换交通工具了的话,所有的代码都不用改变,只需要改变传给该方法的参数,告诉该方法说,需要一个其它的对象,那么它就可以造出其它的对象,然后通过相同的接口返回。很简单吧。

    工厂方法模式也是用来建造对象的,也是类似的,就是有多个类,实现了同一个接口。 在一个抽象类中,定义一个该接口对象,该抽象类中可以有多个方法,这些方法中,可以直接通过内部定义的接口,访问该接口下面的对象的各种方法。 该抽象类中,必须有一个抽象方法,该抽象方法是用来建造该接口的对象的,这样,接口对象的创建就被放到了该程序对象的子类来确定了,想要创建不同的接口对象的话,只需要实现该抽象类,然后在抽象方法中实例化一个具体的接口对象就可以了,然后就可以。也就是说,在抽象类中,已经定义好了那些功能性的方法,这些方法都是通过接口对象调用来实现功能的,但是,具体通过哪个接口对象来实现,则放到子类中 定。

   再有就是抽象工厂了,也是用来创建对象的,看起来抽象工厂好像很复杂,其实不然,其实是很简单的。 这里都是针对接口编写代码的,所以,这里还是要涉及到接口概念。 假设我们要创建界面,现在定义了一个button的接口,你可以根据不同平台,实现不同的button,   和一个 textfeild接口。  那么 , 我们想创建windows系统写的界面(假设只包含一个button和一个textfeild控件), 那么我们就可以通过一个类来完成这个创建任务,该类(抽象工厂类)其实只是一个接口,其中定义了创建界面需要那些步骤, 比如,getbutton(),getTextFeild()等等,然后,可以针对每一个平台,做一个该接口的实现类,来实现具体平台下各个步骤的定义,在这些实现类中,创建具体平台下的各个控件。 这样,抽象工厂模式就做好了, 当在客户端代码中,需要将界面调整到其它平台的时候,只需要将抽象工厂类的实现类传入到客户端代码中某个类的某个方法的形参IAbstructFactory,中就可以了,在该方法中,根据传入的实参的不同,会调用不同的对象创建方法,创建不同平台的控件,然后将控件赋值给该类内部事先定义好的接口对象。 

   其它待续了。

 

 

 

  

抱歉!评论已关闭.