首页 > 其他分享 >设计模式

设计模式

时间:2023-03-06 14:33:26浏览次数:32  
标签:Lazy return Car Hungry class 设计模式 public

设计模式

设计模式 + 反射 + 泛型 + 注解/配置文件等

单例模式

最简单,考的最多的一个设计模式

要点

  (1)构造器私有化

  (2)在本类中创建这个唯一的实例

分类

//饿汉式
//形式一
class Hungry{
    public static final Hungry INSTANCE = new Hungry();
    private Hungry(){
    }
}
//形式二
class Hungry{
    private static final Hungry INSTANCE = new Hungry();
    private Hungry(){
    }
    public static Hungry getInstance(){
        return INSTANCE;
    }
}
//懒汉式
//形式一:(有线程安全问题)
class Lazy{
    private static Lazy instance;
    private Lazy(){
    }
    //延迟创建对象
    public static Lazy getInstance(){
        if(instance == null){
            instance = new Lazy();
        }
        return instance;
    }
}
//形式二:(解决线程安全问题)
//也可以叫双检锁模式
public class Lazy{
    private static Lazy instance;
    private Lazy(){}
    public static Lazy getInstance(){
        if(instance == null){
            synchronized(Lazy.class){
                if(instance == null){
                    instance = new Lazy();
                }
            }
        }
        return instance;
    }
}
//枚举式
enum Single{
    INSTANCE
}
//是特殊的饿汉式

模板设计模式(识别)

使用的情景

  当某个功能在实现时,它的主体的算法结构是确定的,只是其中的某一个或几个步骤无法给出具体的实现,那么这个时候,把这个或几个的步骤抽取成抽象方法,由子类去给出具体的实现,那么子类继承父类时,既可以保留父类的主体算法结构,又可以对这几个抽象部分给出具体的实现

示例代码:

例如:计算某段代码的执行时间
算法结构:
1、获取开始时间
2、执行代码
3、获取结束时间
4、计算差值
public abstract class CalTime{
    public final long getTime(){
        //1、获取开始时间
        long start = System.currentTimeMillis();
        //2、执行代码
        doWork();
        //3、获取结束时间
        long end = System.currentTimeMillis();
        //4、计算差值
        return end - start;
    }
    protected abstract void doWork();
}
class MyCalTime extends CalTime{
    public void doWork(){
        .......
    }
}

工厂设计模式

为什么要用工厂模式

  把创建对象者与对象的使用者分离(把创建者与使用者分离)

  解耦合

形式

  1、简单工厂模式

    特点  一个工厂生产所有产品

    缺点  增加一个新产品, 就要修改工厂类代码  违反了“对扩展开发,对修改关闭”的面向对象的设计原则

    优点  类少,简单

    示例代码

//1、产品的接口
interface  Car{
    void run();
}
//2、各种产品
class Benz implements Car{
    public void run(){
            ...
    }
}
class BMW implements Car{
    public void run(){
            ...
    }
}
//3、工厂
class SimpleFactory {
    public static Car getCar(String type){
        if("benz".equals(type)){
            return new Benz();
        }else if("bmw".equals(type)){
            return new BMW();
        }
        return null;
    }
}
//4、使用者
Car  car = SimpleFactory.getCar("benz");
car.run();

 

  2、工厂方法模式

    特点  个产品配一个工厂

    缺点  类比较多

    优点  增加一个新产品,对原来的代码不需要修改,只需要增加对应的工厂即可

    示例代码

//1、产品的接口
interface  Car{
    void run();
}
//2、各种产品
class Benz implements Car{
    public void run(){
            ...
    }
}
class BMW implements Car{
    public void run(){
            ...
    }
}
//3、各种工厂
interface  Factory{
    Car getCar();
}
class BenzFactory implements Factory{
    public Benz getCar(){
        return new Benz();
    }
}
class BMWFactory implements Factory{
    public BMW getCar(){
        return new BMW();
    }
}
//4、使用者
BenzFactory f = new BenzFactory();
Car car = f.getCar();
car.run();

  3、抽象工厂设计模式

标签:Lazy,return,Car,Hungry,class,设计模式,public
From: https://www.cnblogs.com/woniupa/p/17183660.html

相关文章

  • 前端设计模式——工厂模式
    前端中的工厂模式是一种创建对象的设计模式,它可以让我们封装创建对象的细节,我们使用工厂方法而不是直接调用new关键字来创建对象,使得代码更加清晰、简洁和易于维护。在前......
  • 计算机基础_设计模式
    熟练使用前端常用的设计模式编写代码如单例模式、装饰器模式、代理模式等 发布订阅模式和观察者模式的异同以及实际应用一、定性区别首先,观察者是经典软件设计模式中......
  • 设计模式
    软件设计师:23种设计模式 总图创建型设计模式1.抽象工厂方法模式#代码packagenwnu.sun.patterns.createtype.abstractfactory;/***抽象工厂设计......
  • 设计模式-javascript实现【迭代器模式】
    定义:迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之......
  • Book-深入设计模式-适配器模式
    Book-深入设计模式-适配器模式https://refactoringguru.cn/design-patterns/adapter适配器模式亦称:封装器模式、Wrapper、Adapter适配器模式是一种结构型设计模式,它......
  • Book-深入设计模式-单例模式
    Book-深入设计模式-单例模式https://refactoringguru.cn/design-patterns/singleton单例模式亦称:单件模式、Singleton单例模式是一种创建型设计模式,让你能够保证一个......
  • Book-深入设计模式-原型模式
    Book-深入设计模式-原型模式https://refactoringguru.cn/design-patterns/prototype原型模式亦称:克隆、Clone、Prototype原型模式是一种创建型设计模式,使你能够复制......
  • Book-深入设计模式-生成器模式
    Book-深入设计模式-生成器模式https://refactoringguru.cn/design-patterns/builder生成器模式亦称:建造者模式、Builder生成器模式是一种创建型设计模式,使你能够分步......
  • Book-深入设计模式-抽象工厂模式
    Book-深入设计模式-抽象工厂模式https://refactoringguru.cn/design-patterns/abstract-factory抽象工厂模式亦称:AbstractFactory抽象工厂模式是一种创建型设计模式,......
  • Book-深入设计模式-工厂方法模式
    Book-深入设计模式-工厂方法模式https://refactoringguru.cn/design-patterns/factory-method工厂方法模式亦称:虚拟构造函数、VirtualConstructor、FactoryMethod工......