zoukankan      html  css  js  c++  java
  • 工厂方法模式

    设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

     1 package designPattern;
     2 
     3 /**
     4  * 工厂方法模式
     5  * @author Administrator
     6  */
     7 public class A4_FactoryMethodTest {
     8 
     9     /**
    10      * 定义一个用于创建对象的接口,让子类决定实例化哪一个类,FactoryMethod使一个类的实例化延迟到其子类
    11      * 适用于:
    12      *1.当一个类不知道它所必须创建的对象的类的时候。
    13       2.当一个类希望由它的子类来指定它所创建的对象的时候。
    14       3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
    15      */    
    16     public static void main(String[] args) {
    17         IWorkFactory studWorkFactory=new StudentWorkFactory();
    18         studWorkFactory.getWork().doWork();
    19         IWorkFactory teachWorkFactory=new TeacherWorkFactory();
    20         teachWorkFactory.getWork().doWork();
    21     }
    22 }
    23 //Product 定义工厂方法所创建的对象的接口
    24 interface Work
    25 {
    26     void doWork();
    27 }
    28 //ConcreteProduct 实现Product接口
    29 class StudentWork implements Work
    30 {
    31     public void doWork(){
    32         System.out.println("学生做作业...");
    33     }
    34 }
    35 class TeacherWork implements Work
    36 {
    37     public void doWork(){
    38         System.out.println("老师批改作业...");
    39     }
    40 }
    41 //Creator 声明工厂方法,该方法返回一个Product类型的对象.creator也可以定义一个工厂方法的缺省实现,
    42 //它返回一个ConcreteProduct对象,可以调用工厂方法以创建一个Product对象
    43 interface IWorkFactory
    44 {
    45     Work getWork();
    46 }
    47 //ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct对象
    48 class StudentWorkFactory implements IWorkFactory
    49 {
    50     public Work getWork() {        
    51         return new StudentWork();
    52     }    
    53 }
    54 class TeacherWorkFactory implements IWorkFactory
    55 {
    56     public Work getWork() {        
    57         return new TeacherWork();
    58     }    
    59 }

    环境:JDK1.6,MAVEN,tomcat,eclipse

    源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar

    欢迎亲们评论指教。

  • 相关阅读:
    Android Stuido 更新问题
    ListView 获取精确滚动值
    获取ActionBar高度
    AnyncTaskLoader写法
    ScrollView 里面捕获OnTouchMove事件
    ImageLoader displayers 之CircleBitmapDisplayer
    DownloadManager 下载Apk 打开时 解析应用包是出错
    GSON 使用记录
    Android studio 不能升级问题
    一个社交App是如何构建高伸缩性的交互式系统
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413703.html
Copyright © 2011-2022 走看看