• 工厂方法模式


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

     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

    欢迎亲们评论指教。

  • 相关阅读:
    docker固定IP地址重启不变
    关于 CentOS 7 里面 普通用户 Ulimit max user processes 值的问题
    CentOS tengine mysql 5.7 php 5.6
    strace 分析 跟踪 进程错误
    WPF中的字体改善
    C#数据类型-string
    WPF中的文字修饰
    Winform与WPF对话框(MessageBox, Dialog)之比较
    WPF中将四个数字字符串值(比如:"10,10,300,300")转为Rect
    WPF中嵌入Flash(ActiveX)
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413703.html
Copyright © 2020-2023  润新知