• 设计模式


    单例模式

    package com.designpattern;
    
    public class SingletonDemo {
        private static volatile SingletonDemo singleton;
        private SingletonDemo(){}
    
        private static SingletonDemo getInstance() {
            if (singleton == null) {
                synchronized (SingletonDemo.class) {
                    if (singleton == null) {
                        singleton = new SingletonDemo();
                    }
                }
            }
            return singleton;
        }
    }

    简单工厂模式

    package com.designpattern;
    
    /**
     * 简单工厂模式
     *
     * 抽象Product、Product类、工厂类、
     *
     */
    abstract class Phone{
        public abstract void sing();
    }
    
    class MiPhone extends Phone {
    
        @Override
        public void sing() {
            System.out.println("xiaomi");
        }
    }
    
    class IPhone extends Phone {
        @Override
        public void sing(){
            System.out.println("Iphone");
        }
    }
    
    class PhoneFactory{
        public Phone make(String kind){
            if(kind.equalsIgnoreCase("xiaOmI")){
                return new MiPhone();
            }else if(kind.equalsIgnoreCase("iphOne")){
                return new IPhone();
            }
            return null;
        }
    }
    
    public class SimpleFactoryDemo {
        public static void main(String[] args) {
            PhoneFactory pf = new PhoneFactory();
            Phone phone = pf.make("xiaoMI");
            phone.sing();
    
        }
    }

    工厂方法模式

    package com.designpattern;

    /**
    * 工厂方法模式
    *
    * 抽象目标类、具体目标类、工厂接口
    *
    */
    //abstract class Phone{
    // public abstract void sing();
    //}
    //
    //class MiPhone extends Phone {
    // @Override
    // public void sing() {
    // System.out.println("xiaomi");
    // }
    //}
    //
    //class IPhone extends Phone {
    //
    // @Override
    // public void sing() {
    // System.out.println("iphone");
    // }
    //}

    interface IFactory{
    Phone makePhone();
    }

    class MiFactory implements IFactory{
    @Override
    public Phone makePhone() {
    return new MiPhone();
    }
    }

    class IPhoneFactory implements IFactory {

    @Override
    public Phone makePhone() {
    return new IPhone();
    }
    }

    public class FactoryMethodDemo {
    public static void main(String[] args) {
    IFactory miFactory = new MiFactory();
    IFactory iphoneFactory = new IPhoneFactory();
    Phone miPhone = miFactory.makePhone();
    Phone iPhone = iphoneFactory.makePhone();
    miPhone.sing();
    iPhone.sing();

    }
    }
    一回生,二回熟
  • 相关阅读:
    进度条与拖动条的使用学习
    双指针,BFS和图论(三)
    dubbo文档笔记
    ByteBuf
    Netty源码解析—客户端启动
    Netty源码解析---服务端启动
    java并发程序和共享对象实用策略
    docker命令
    elasticSearch基本使用
    Filebeat6.3文档—Log input配置
  • 原文地址:https://www.cnblogs.com/zzytxl/p/12763951.html
Copyright © 2020-2023  润新知