• 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);
        }
    }
  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/kenantongxue/p/14003150.html
Copyright © 2020-2023  润新知