zoukankan      html  css  js  c++  java
  • 简单工厂模式

    说明:
    1、client只会找到ComputerEngineer,并告诉他用哪个cpu和那个mainboard
    2、computerEngineer只会从cpuFactory和mainboardFactory分别获得cpu和mainboard,并分别告诉它们的cpu型号、mainboard型号
    3、cpuFactory会生产多种CPU,一种是intel,一种amd
          mainboardFactory会生产多种mainboard,一种intel,一种amd
    4、所有的cpu都实现cpu接口
        所有mianboard实现mainboard接口
    5、
    /**
     * Project Name:DesignPatterns
     * File Name:Cpu.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:11:14
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:Cpu 
     * Function: cpu抽象类
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:11:14 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public interface Cpu {
        public void calculate();
    }
    /**
     * Project Name:DesignPatterns
     * File Name:AmdCpu.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:16:34
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:AmdCpu 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:16:34 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class CpuAmd implements Cpu {
    
        private int pins = 0;
        public  CpuAmd(int pins){
            this.pins = pins;
        }
        
        @Override
        public void calculate() {
    
            System.out.println("AMD CPU的针脚数:" + pins);
    
        }
    
    }
    /**
     * Project Name:DesignPatterns
     * File Name:IntelCpu.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:13:24
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:IntelCpu 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:13:24 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class CpuIntel implements Cpu {
    
        //cpu针脚数
        private int pins = 0;
        public CpuIntel(int pins){
            this.pins = pins;
        }
        @Override
        public void calculate() {
            System.out.println("Intel CPU的针脚数是:"+pins);
    
        }
    
    }
    /**
     * Project Name:DesignPatterns
     * File Name:CpuFactory.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:27:39
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:CpuFactory 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:27:39 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class CpuFactory {
        public static Cpu createCpu(int type){
            Cpu cpu = null;
            if(type ==1){
                cpu = new CpuIntel(755);
            }
            else if(type ==2 ){
                cpu = new CpuAmd(938);
            }
            return cpu;
        } 
    }
    /**
     * Project Name:DesignPatterns
     * File Name:Mainboard.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:12:13
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:Mainboard 
     * Function: 主板抽象类 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:12:13 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public interface Mainboard {
        public void installCPU();
    }
    /**
     * Project Name:DesignPatterns
     * File Name:MainboardAmd.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:22:47
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:MainboardAmd 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:22:47 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class MainboardAmd implements Mainboard {
    
        /*CPU插槽的孔数*/
        private int cpuHoles = 0;
        
        /**
         * 构造方法,传入CPU插槽的孔数
         * @param cpuHoles
         */
        public MainboardAmd(int cpuHoles){
            this.cpuHoles = cpuHoles;
        }
        @Override
        public void installCPU() {
            // TODO Auto-generated method stub
            System.out.println("AMD主板的CPU插槽孔数是:" + cpuHoles);
        }
    
    
    }
    /**
     * Project Name:DesignPatterns
     * File Name:MainboardIntel.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:25:44
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
     */
    
    package com.louis.simplefactory;
    
    /**
     * ClassName:MainboardIntel Function: TODO ADD FUNCTION. Reason: TODO ADD
     * REASON. Date: 2017年9月25日 下午9:25:44
     * 
     * @author michael
     * @version
     * @since JDK 1.7
     * @see
     */
    public class MainboardIntel implements Mainboard {
    
        /**
         * CPU插槽的孔数
         */
        private int cpuHoles = 0;
    
        /**
         * 构造方法,传入CPU插槽的孔数
         * 
         * @param cpuHoles
         */
        public MainboardIntel(int cpuHoles) {
            this.cpuHoles = cpuHoles;
        }
    
        @Override
        public void installCPU() {
            // TODO Auto-generated method stub
            System.out.println("Intel主板的CPU插槽孔数是:" + cpuHoles);
        }
    
    }
    /**
     * Project Name:DesignPatterns
     * File Name:MainboardFactory.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:30:01
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:MainboardFactory 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:30:01 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class MainboardFactory {
        public static Mainboard createMainboard(int type) {
            Mainboard mainboard = null;
            if (type == 1) {
                mainboard = new MainboardIntel(755);
            } else if (type == 2) {
                mainboard = new MainboardAmd(938);
            }
            return mainboard;
        }
    }
    /**
     * Project Name:DesignPatterns
     * File Name:ComputerEngineer.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:33:31
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:ComputerEngineer 
     * Function: 组装电脑
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:33:31 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class ComputerEngineer {
        //定义cpu
        private Cpu cpu;
        //定义主板
        private Mainboard mainboard;
        /*
         * 组装电脑
         * */
        public void makeComputer(int cpuType,int mainboardType){
            //1准备好装机所需要的配置
            this.prepareHardwares(cpuType, mainboardType);
            //2组装机器
            
            //3测试机器
            
            //4支付客户
        }
        
        public void prepareHardwares(int cpuType,int mainboardType){
            //cpu和主板的具体实现
            //装机师傅直接找相应的工程获取
            this.cpu = CpuFactory.createCpu(cpuType);
            this.mainboard = MainboardFactory.createMainboard(mainboardType);
            
            //测试配件是否好用
            this.cpu.calculate();
            this.mainboard.installCPU();
        }
        
    }
    /**
     * Project Name:DesignPatterns
     * File Name:Client.java
     * Package Name:com.louis.simplefactory
     * Date:2017年9月25日下午9:44:08
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.simplefactory;
    /**
     * ClassName:Client 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月25日 下午9:44:08 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class Client {
        public static void main(String[] args) {
            //用户指定用哪个cpu或者mainboard
            ComputerEngineer computerEngineer = new ComputerEngineer();
            computerEngineer.makeComputer(1, 1);
        }
    }

  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7594339.html
Copyright © 2011-2022 走看看