您的位置:首页 > 财经 > 产业 > 外贸网站的作用_西安网站推广哪家稳定_新华传媒b2b商务平台_网络销售怎么聊客户

外贸网站的作用_西安网站推广哪家稳定_新华传媒b2b商务平台_网络销售怎么聊客户

2025/2/25 5:53:58 来源:https://blog.csdn.net/weixin_45070922/article/details/145836527  浏览:    关键词:外贸网站的作用_西安网站推广哪家稳定_新华传媒b2b商务平台_网络销售怎么聊客户
外贸网站的作用_西安网站推广哪家稳定_新华传媒b2b商务平台_网络销售怎么聊客户

单例模式

概念:

确保一个类只有一个实例,而且自行实例化并向震哥哥系统提供这个实例

应用:

无状态的,一般以工具类形式,进行提供

代码:

懒汉式,双重检查锁

class Singleton {private static volatile Singleton instance = null;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}

备注:使用volatile修饰,是因为new Singleton()可以拆解为3步:

1、分配内存

2、初始化对象

3、指向刚分配的地址

若发生重排序,假设A线程执行了1和3,还没有执行2,B线程来到判断NULL时,不为NULL,B线程就会直接返回还没有初始化的instance了。volatile可以避免重排序

简单工厂模式

概念:

又称为静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同,返回不同类的实例,简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

应用:

不够灵活,新增产品需要修改工厂类;

优点在于实现对象的创建和使用分离

代码:
public class SimpleFactory {public static Product createProduct(String type){if (type.equals("A")){return new ProductA();} else {return new ProductB();}}public static void main(String[] args) {Product p = SimpleFactory.createProduct("A");p.print();}
}abstract class Product{public abstract void print();
}class ProductA extends Product{@Overridepublic void print(){System.out.println("A");}}class ProductB extends Product{@Overridepublic void print(){System.out.println("B");}
}

工厂模式

概念:

定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法使一个类的实例化延迟到其子类

应用:

代码:
// 定义产品接口
interface Shape {void draw();
}// 具体产品1
class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Circle");}
}// 具体产品2
class Square implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Square");}
}// 定义工厂接口
interface ShapeFactory {Shape createShape();
}// 具体工厂1
class CircleFactory implements ShapeFactory {@Overridepublic Shape createShape() {return new Circle();}
}// 具体工厂2
class SquareFactory implements ShapeFactory {@Overridepublic Shape createShape() {return new Square();}
}// 客户端代码
public class FactoryMethodDemo {public static void main(String[] args) {ShapeFactory circleFactory = new CircleFactory();Shape circle = circleFactory.createShape();circle.draw();ShapeFactory squareFactory = new SquareFactory();Shape square = squareFactory.createShape();square.draw();}
}

抽象工厂模式

概念:

一种更高级的工厂模式,用于创建相关或依赖对象的家族,而无需明确指定具体类

代码:
// 定义产品接口1
interface Shape {void draw();
}// 定义产品接口2
interface Color {void fill();
}// 具体产品1
class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Circle");}
}// 具体产品2
class Square implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Square");}
}// 具体产品3
class RedColor implements Color {@Overridepublic void fill() {System.out.println("Filling with Red Color");}
}// 具体产品4
class BlueColor implements Color {@Overridepublic void fill() {System.out.println("Filling with Blue Color");}
}// 定义抽象工厂接口
interface AbstractFactory {Shape getShape(String shapeType);Color getColor(String colorType);
}// 具体工厂1
class ShapeFactory implements AbstractFactory {@Overridepublic Shape getShape(String shapeType) {if (shapeType == null) {return null;}if (shapeType.equalsIgnoreCase("CIRCLE")) {return new Circle();} else if (shapeType.equalsIgnoreCase("SQUARE")) {return new Square();}return null;}@Overridepublic Color getColor(String colorType) {return null;}
}// 具体工厂2
class ColorFactory implements AbstractFactory {@Overridepublic Shape getShape(String shapeType) {return null;}@Overridepublic Color getColor(String colorType) {if (colorType == null) {return null;}if (colorType.equalsIgnoreCase("RED")) {return new RedColor();} else if (colorType.equalsIgnoreCase("BLUE")) {return new BlueColor();}return null;}
}// 工厂生成器
class FactoryProducer {public static AbstractFactory getFactory(String choice) {if (choice == null) {return null;}if (choice.equalsIgnoreCase("SHAPE")) {return new ShapeFactory();} else if (choice.equalsIgnoreCase("COLOR")) {return new ColorFactory();}return null;}
}// 客户端代码
public class AbstractFactoryDemo {public static void main(String[] args) {AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE");Shape shape1 = shapeFactory.getShape("CIRCLE");shape1.draw();Shape shape2 = shapeFactory.getShape("SQUARE");shape2.draw();AbstractFactory colorFactory = FactoryProducer.getFactory("COLOR");Color color1 = colorFactory.getColor("RED");color1.fill();Color color2 = colorFactory.getColor("BLUE");color2.fill();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com