zoukankan      html  css  js  c++  java
  • Java(36):设计模式

    静态工厂模式:

    package shejimoshi;
    
    /*
     * 静态工厂模式(工厂模式)
     * 
     * */
    
    public class Demo1 {
    
        public static void main(String[] args) {
            
    //        Restaurant r1 = new Fish();
    //        r1.cook();
    //        Restaurant r2 = new Duck();
    //        r2.cook();
            
            Restaurant r3 = Waiter.getMenu(Waiter.MENU_FISH);
            r3.cook();
            
        }
        
    }
    
    interface Restaurant {
        public void cook();
    }
    
    class Fish implements Restaurant {
        @Override
        public void cook() {
            System.out.println("cook fish...");
        }
    }
    
    class Duck implements Restaurant {
        @Override
        public void cook() {
            System.out.println("cook duck...");
        }
    }
    
    class Meet implements Restaurant {
        @Override
        public void cook() {
            System.out.println("cook meet...");
        }
    }
    
    class Waiter {
        public static final int MENU_FISH = 1;
        public static final int MENU_DUCK = 2;
        public static final int MENU_MEET = 3;
        
        public static Restaurant getMenu(int type) {
            switch(type) {
            case MENU_FISH:
                return new Fish();
            case MENU_DUCK:
                return new Duck();
            case MENU_MEET:
                return new Meet();
            default:
                return null;
            }
        }
    }

    参考:。。。

    多方法静态工厂:

    package shejimoshi;
    
    /*
     * 多方法静态工厂
     * 
     * */
    
    public class Demo2 {
    
        public static void main(String[] args) {
            
            CPU c1 = CreateFactory.makeIntelCpu();
            c1.makeCPU();
            
            CPU c2 = CreateFactory.makeAmdCpu();
            c2.makeCPU();
            
        }
        
    }
    
    interface CPU {
        public void makeCPU();
    }
    
    class intelCPU implements CPU {
        @Override
        public void makeCPU() {
            System.out.println("make intel cpu...");
        }
    }
    
    class amdCPU implements CPU {
        @Override
        public void makeCPU() {
            System.out.println("make amd cpu...");
        }
    }
    
    class CreateFactory {
        public static CPU makeIntelCpu() {
            return new intelCPU();
        }
        public static CPU makeAmdCpu() {
            return new amdCPU();
        }
    }

    单例模式:

    package shejimoshi;
    
    /*
     * 单例模式
     * 
     * */
    
    class SingleObject {
    
        private static SingleObject instance = new SingleObject();
        
        private SingleObject() {
            
        }
        
        public static SingleObject getInstance() {
            return instance;
        }
        
        public void showMessage() {
            System.out.println("hello world");
        }
        
    }
    
    public class Demo3 {
        
        public static void main(String[] args) {
            
            SingleObject singleObject = SingleObject.getInstance();
    //        SingleObject s2 = SingleObject.getInstance();
    //        System.out.println(singleObject == s2);
            
            singleObject.showMessage();
            
        }
        
    }

     抽象工厂模式:

    package shejimoshi;
    
    public class Demo4 {
    
        public static void main(String[] args) {
            
            // 1.安装宝马轮胎和方向盘
            BMWCarFactory bmwCarFactory = new BMWCarFactory();
            bmwCarFactory.installWheel();
            bmwCarFactory.installSteeringWheel();
        
            // 2.安装奔驰轮胎和方向盘
            BenzCarFactory benzCarFactory = new BenzCarFactory();
            benzCarFactory.installWheel();
            benzCarFactory.installSteeringWheel();
            
        }
        
    }
    
    // 1.生产轮胎的工厂接口
    interface WheelFactory {
        public String createWheel();
    }
    
    // 1.生产宝马轮胎的工厂
    class BMWWheelFactory implements WheelFactory {
        @Override
        public String createWheel() {
            System.out.println("生产宝马轮胎...");
            return "宝马轮胎";
        }
    }
    
    // 1.生产奔驰轮胎
    class BenzWheelFactory implements WheelFactory {
        @Override
        public String createWheel() {
            System.out.println("生产奔驰轮胎...");
            return "奔驰轮胎";
        }
    }
    
    // 2.生产方向盘的工厂接口
    interface SteeringWheelFactory {
        public String createSteeringWheel();
    }
    
    // 2.生产宝马方向盘的工厂
    class BMWSteeringWheelFactory implements SteeringWheelFactory {
        @Override
        public String createSteeringWheel() {
            System.out.println("生产宝马方向盘...");
            return "宝马方向盘";
        }
    }
    
    // 2.生产奔驰方向盘的工厂
    class BenzSteeringWheelFactory implements SteeringWheelFactory {
        @Override
        public String createSteeringWheel() {
            System.out.println("生产奔驰方向盘...");
            return "奔驰方向盘";
        }
    }
    
    
    // 3.抽象的汽车工厂接口:需要生产轮胎(宝马、奔驰)、方向盘(宝马、奔驰)
    interface AbstractCarFactory {
        public void installWheel();
        public void installSteeringWheel();
    }
    
    // 3.宝马工厂
    class BMWCarFactory implements AbstractCarFactory {
        @Override
        public void installWheel() {
            BMWWheelFactory bmwWheelFactory = new BMWWheelFactory();
            String wheel = bmwWheelFactory.createWheel();
            System.out.println("安装轮胎:" + wheel);
        }
        @Override
        public void installSteeringWheel() {
            BMWSteeringWheelFactory bmwSteeringWheelFactory = new BMWSteeringWheelFactory();
            String steeringWheel = bmwSteeringWheelFactory.createSteeringWheel();
            System.out.println("安装方向盘:" + steeringWheel);
        }
    }
    
    // 3.奔驰工厂
    class BenzCarFactory implements AbstractCarFactory {
        @Override
        public void installWheel() {
            BenzWheelFactory benzWheelFactory = new BenzWheelFactory();
            String wheel = benzWheelFactory.createWheel();
            System.out.println("安装轮胎:" + wheel);
        }
        @Override
        public void installSteeringWheel() {
            BenzSteeringWheelFactory benzSteeringWheelFactory = new BenzSteeringWheelFactory();
            String steeringWheel = benzSteeringWheelFactory.createSteeringWheel();
            System.out.println("安装方向盘:" + steeringWheel);
        }
    }
  • 相关阅读:
    阿里云:面向5G时代的物联网无线连接服务
    走近科学,探究阿里闲鱼团队通过数据提升Flutter体验的真相
    Redis 5.0新功能介绍
    阿里云发布 Redis 5.0 缓存服务:全新 Stream 数据类型带来不一样缓存体验
    荣获“5G MEC优秀商用案例奖”,阿里云边缘计算发力新零售
    阿里云亮相2019联通合作伙伴大会,边缘计算等3款云产品助力5G时代产业数字化转型
    noip2014 寻找道路
    noip2014 无线网络发射器选址
    noip2014 联合权值
    noip2013 华容道
  • 原文地址:https://www.cnblogs.com/kenantongxue/p/14003150.html
Copyright © 2011-2022 走看看