java设计模式【单例,简单工厂,静态代理】

单例模式

/*
    单例模式:
       为了节省内存而且保证内容一致性,一些类全局只需要创建一个实例对象

    步骤:
        1:构造器私有化
        2:私有的静态该类的引用
        3:公共的静态的访问方式

       懒汉式:在调用时才会创建对象  -->线程不安全|不同步的
       懒汉式:在类加载完成之后创建对象 -->线程安全的|不同步的

*/
public class danLi {
    public static void main(String[] args) {
        Hunger hunger01 = Hunger.getHunger();
        Hunger hunger02 = Hunger.getHunger();
        System.out.println(hunger01==hunger02);
    }
}

/**
 * 饿汉式 单例模式
 */
class Hunger{
//    先创建私有公共的对象
    private static Hunger hunger=new Hunger();
//    构造器私有化
    private Hunger(){}
//    公共静态访问方式
    public static Hunger getHunger(){
        return hunger;
    }
}
/*
 懒汉式 单例模式
*/
class Lazy{
    //    先创 建私有公共的对象
    private static Lazy Lazy=null;
    //    构造器私有化
    private Lazy(){}
    //    公共静态访问方式
    public static Lazy getHunger(){
        return Lazy;
    }
}

简单工厂

/**
 * 简单工厂模式:
 *      抽象产品角色:具体产品角色实现的接口|继承的父类
 *      具体产品:实现类|子类
 *      工厂角色
 *  案例:一个厂商造车,卖宝马和奔驰等等品牌。。。4S工厂去卖,需要用户自己挑选,怎么做由流水线
 *  决定,但是不能用户去流水线创造
 */
public class Factory {
    public static void main(String[] args) {
        Factory.getCar("baoma").show();
    }
    // 工厂角色
    public static Car getCar(String type){
        if("baoma".equals(type)){
            return new BaoMa();
        }
        if("benchi".equals(type)){
            return new BenChi();
        }
        return null;
    }
}
//厂商
interface Car{
    void show();
}
//奔驰流水线
class BenChi implements Car{
    @Override
    public void show() {
        System.out.println("我是奔驰");
    }
}
//宝马流水线
class BaoMa implements Car{
    @Override
    public void show() {
        System.out.println("我是宝马");
    }
}

静态代理

/**
 * 静态代理:
 *  代理角色与真实角色实现相同的接口
 *  代理角色持有真实角色的引用
 *  代理行为
 *
 *  例子:某个项目经理【有很多项目经理】,需要招聘人员
 *      招聘人员有很多步骤,项目经理只负责面食技术,其他的由HR代理
 *      需要面试者告诉HR他要面试那个项目经理的岗位,那么hr就代理那个项目经理
 */
public class StaticProxy {
    public static void main(String[] args) {
        HR hr = new HR(new Manager("王经理"));
        hr.adduser();
    }
}
//录用接口
interface AddUser{
    void adduser();
}
//真实角色:项目经理
class Manager implements AddUser{
    private String name;
    public Manager(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public void adduser() {
        System.out.println("轮到"+this.name+"去面试技术");
    }
}
//代理角色 HR 前面面试内容由HR代理项目经理去面试
class HR implements AddUser{
    private Manager manager=null;

    public HR(Manager manager) {
        this.manager = manager;
    }

    @Override
    public void adduser() {
        System.out.println("邀请笔试");
        System.out.println("笔试通过");
        System.out.println("邀请面试");
        manager.adduser();
        System.out.println("开始谈薪资");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值