饿汉式
package com.xuwen.single;
/**
* author:xuwen
* Created on 2021/7/25
*/
//饿汉式->构造器私有,别人无法new对象,保证就一个对象
public class Hungry {
//可能浪费空间
private byte[] data1 = new byte[1024*1024];
private byte[] data2 = new byte[1024*1024];
private byte[] data3 = new byte[1024*1024];
private Hungry(){
}
private final static Hungry HUNGRY = new Hungry();
public static Hungry getInstance(){
return HUNGRY;
}
}
懒汉式
package com.xuwen.single;
/**
* author:xuwen
* Created on 2021/7/25
*/
//懒汉式->构造器私有,别人无法new对象,保证就一个对象
public class LazyMan {
//构造方法私有化
private LazyMan(){
}
private volatile static LazyMan LazyMan;
//双重检测锁模式->DCL懒汉式s
public static LazyMan getInstance(){
if(LazyMan == null){
//锁class,确保只有一个s
synchronized (LazyMan.class){
if(LazyMan == null){
LazyMan = new LazyMan();
}
}
}
return LazyMan;
}
}工厂模式

简单工厂模式
package com.xuwen.Factory;
/**
* author:xuwen
* Created on 2021/7/25
*/
public class CarFactory {
public static Car getCar(String car){
if(car.equals("五菱宏光")){
return new Wulin();
}else if(car.equals("特斯拉")){
return new Telsta();
}else{
return null;
}
}
}工厂方法模式

Car接口一个,CarFactory接口一个。
消费者一个类,特斯拉类+特斯拉工厂类,五菱宏光类+五菱宏光工厂类。
package com.xuwen.Method;
/**
* author:xuwen
* Created on 2021/7/25
*/
public interface Car {
void name();
}package com.xuwen.Method;
//工厂方法模式!
public interface CarFactory {
Car getCar();
}package com.xuwen.Method;
/**
* author:xuwen
* Created on 2021/7/25
*/
public class Telsta implements Car {
@Override
public void name() {
System.out.println("特斯拉");
}
}package com.xuwen.Method;
public class TelstaFactory implements CarFactory{
@Override
public Car getCar() {
return new Telsta();
}
}package com.xuwen.Method;
import com.xuwen.Factory.CarFactory;
/**
* author:xuwen
* Created on 2021/7/25
*/
public class Comsumer {
//main
public static void main(String[] args) {
Car car1 = new WulinFactory().getCar();
Car car2 = new TelstaFactory().getCar();
car1.name();
car2.name();
}
}抽象工厂模式




抽象的产品工厂,接口
抽象的iphone工厂,接口
抽象的路由器工厂,接口
小米工厂interface抽象的产品工厂-》写小米手机类,写小米路由器类,写小米工厂类
华为工厂interface,抽象的产品工厂-》写华为手机类,写华为路由器类,写华为工厂类
package com.xuwen.AbstractFactory;
//手机产品接口
public interface IphoneProduct {
void start();
void shutdown();
void callup();
void sendSMS();
}package com.xuwen.AbstractFactory;
//路由器产品接口
public interface IRouterProduct {
void start();
void shutdown();
void openwifi();
void setting();
}package com.xuwen.AbstractFactory;
/**
* author:xuwen
* Created on 2021/7/25
*/
//抽象产品工厂
//大家都是接口!!!
//抽象工厂,生产的是抽象产品
public interface IProductFactory {
//生产手机
IphoneProduct iphoneProduct();
//生产路由器
IRouterProduct routerProduct();
}小米类
package com.xuwen.AbstractFactory;
/**
* author:xuwen
* Created on 2021/7/25
*/
//小米手机类
public class XiaomiPhone implements IphoneProduct {
@Override
public void start() {
System.out.println("开启小米手机");
}
@Override
public void shutdown() {
System.out.println("关闭小米手机");
}
@Override
public void callup() {
System.out.println("使用小米手机打电话");
}
@Override
public void sendSMS() {
System.out.println("使用小米手机发短信s");
}
}小米路由器类
package com.xuwen.AbstractFactory;
/**
* author:xuwen
* Created on 2021/7/25
*/
//产品,小米路由器
public class XiaomiRouter implements IRouterProduct {
@Override
public void start() {
System.out.println("打开小米路由器");
}
@Override
public void shutdown() {
System.out.println("关闭小米路由器");
}
@Override
public void openwifi() {
System.out.println("打开小米路由器的wifi");
}
@Override
public void setting() {
System.out.println("设定小米路由器");
}
}小米工厂类
package com.xuwen.AbstractFactory;
/**
* author:xuwen
* Created on 2021/7/25
*/
public class xiaomiFactory implements IProductFactory {
@Override
public IphoneProduct iphoneProduct() {
return new XiaomiPhone();
}
@Override
public IRouterProduct routerProduct() {
return new XiaomiRouter();
}
}
工厂模式结论

