zoukankan      html  css  js  c++  java
  • 设计模式之二 工厂模式

    工厂模式的定义:
    定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法决定一个类的实例化延迟到其子类。

    类图如下:

    image

    通用的代码如下:

    //抽象产品类
    public abstract class Product {
        // 产品通用的方法.....
        public void method1(){
            
        }
        
        //抽象方法
        public abstract void method2();
    
    }
    //--------------------------------------产品类------------------------------------------------
    //具体类 1
    public class ConcreteProduct1 extends Product {
    
        
        @Override
        public void method2() {
            // 处理具体产品1的方法
    
        }
    
    }
    
    //具体产品类2
    public class ConcreteProduct2 extends Product {
    
        @Override
        public void method2() {
            //具体产品2的方法.....
    
        }
    
    }
    
    //-----------------------------------创建类------------------------------------------
    //抽象的创建类
    public abstract class Creator {
        //通过反射创建具体的产品类...
        public abstract <T extends Product> T  createProduct(Class<T> c);
    }
    
    //具体的抽象类
    public class ConcreteCreator extends Creator {
    
    
        @Override
        public <T extends Product> T createProduct(Class<T> c) {
            //产品类....
            Product product = null;
            
            if(product == null){
                try {
                    product = (Product) Class.forName(c.getName()).newInstance();
                }
                catch (Exception  e) {
                    e.printStackTrace();
                }
            }
            
            //返回.....
            return (T)product;
            
        }
    
    }
    
    //---------------------------------------------------------Client 类--------------------------------------------------------------------------
    public class Client {
    
        /** 
         * @Title: main 
         * @Description: 工厂类的Client
         * @param @param args    设定文件 
         * @return void    返回类型 
         * @throws 
         */
        public static void main(String[] args) {
            //工厂创建类
            Creator  creator = new ConcreteCreator();
            //生成具体产品类1
            Product  product = creator.createProduct(ConcreteProduct1.class);
            
            //继续业务处理
    
        }
    
    }

    简单工厂类

    把类图去掉抽象类 creator类,将ConcreteCreator 方法修改为静态即可。

  • 相关阅读:
    新东方英语学习方法
    最易遭老板“炒”的15种员工
    如何阅读代码
    Window 消息大全使用详解
    英语学习的六大原则
    单用户多角色权限的MSSQL实现
    .Net中的5种事务总结
    一个.Net程序员关于学习的思考顺带思考人生
    Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?
    推荐几个win8系统下载比较好的网站
  • 原文地址:https://www.cnblogs.com/tjxwg/p/4056130.html
Copyright © 2011-2022 走看看