• 设计模式


    单列模式

    功能:只能创建一个对象的实列

    懒汉:会出现线程安全问题,但是不浪费内存空间

    package cn.jiedada.singleton;
    
    public class Lazy {
        private Lazy(){}
        private static Lazy instance;
        public static Lazy getLazy(){
            if(instance==null){
                //同步代码块
                synchronized (Lazy.class) {
                    if(instance==null){
                        return instance=new Lazy();
                    }
                }
            }
            return instance;
        }
    }
    View Code

    饿汉:不会线程不安全,但是会浪费内存

    package cn.jiedada.singleton;
    
    public class Hungry {
        private Hungry(){}
        private static Hungry instance;
        //优化
        static{
            instance=new Hungry();
            //可以写入我们想做的操作
        }
        public static Hungry getHungry(){
            return instance;
        }
    }
    View Code
     

    工厂模式

    先创建一个工厂类,然后子类继承工厂方法,在创建一个判断创建什么工厂

    public abstract class Refrigerator {
        abstract void createRefrigerator();
    }
    public class Hisense extends Refrigerator{
        @Override
        void createRefrigerator(){
            System.out.println("这是海信冰箱");
        }
    }
    public class Haier extends Refrigerator{
        @Override
        void createRefrigerator(){
            System.out.println("这是海尔冰箱");
        }
    }
    public class RefrigeratorFactroy {
        public Refrigerator createRefrigerator(int num) {
            if(num==1){
                return new Haier();
            }else{
                return new Hisense();
            }
        }
    }
    View Code

    适配器模式

    package cn.jiedada.adapter;
    
    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            WineAdapter wineAdapter = new WineAdapter(new Tea());
            wineAdapter.dreak();
        }
    
    }
    class Wine{
        public void dreak(){
            System.out.println("喝酒");
        }
    }
    class Tea{
        public void dreak(){
            System.out.println("喝茶");
        }
    }
    class WineAdapter extends Wine{
        Tea tea;
        public WineAdapter(Tea tea) {
            this.tea=tea;
        }
        public void dreak(){
            tea.dreak();
        }
    }
    View Code

    装饰器

    package cn.jiedada.decorate;
    
    /**装饰者模式,通过不继承的方式获得其他的方法或者字段来自己使用
     * 创建一个构造方法来传入想要使用类的对象,这样就可以调用该类了;
     * 而不是在被装饰的类中直接new一个对象,这样浪费内存
     * @author 杰大大是真滴帅
     *
     */
    public class Test {
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            B b = new B(new A());
            b.read();
        }
    
    }
    class A {
        public void decorate(){
            System.out.println("这是一朵美丽的花城市");
        }
    }
    class B{
        A a;
        public B(A a) {
            this.a=a;
        }
        public void read(){
            a.decorate();
            System.out.println("我在这里读书");
        }
    }
    View Code
  • 相关阅读:
    DS博客作业07--查找
    第五次作业——05图
    第四次作业——04树
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    C语言博客05--指针
    C语言博客作业04--数组
    DS博客作业08--课程总结
    C语言-第0次作业
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/11306895.html
Copyright © 2020-2023  润新知