现在开始写一下自己的历程吧

java基础:

首先写一下单例模式吧  单例模式分两种一种懒汉模式,一种饿汉模式

饿汉模式   

class Student{

        private Student(){}

        private static final Student s=new Student();

        public static Student getInstance(){

            return s;       

    }

}   

懒汉模式

class Student{

    private Studnet(){}

    private static final Student=null;

    public static Student getInstance(){

        return s;

    }

}

工厂模式  为什么要用工厂设计模式?工厂设计模式有什么好处?

先来说一下工厂模式有哪些 :1.简单工厂(静态方法工厂) 3.抽象工厂

然后说一下自己的理解和看的一些资料的总结

        总结应用场景:当我起床不想做任何事情,而我现在需要刷牙,洗脸,洗头,刮胡子,想喝牛奶,吃包子这个时候要我自己动手要是有个工厂就好了,有个工厂就像有了个保姆一样你要什么就叫他准备,然后当你呼叫她的时候他什么都给你准备好了,你只要自己选择就可以。

优点:将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,明确了职责。

把初始化实例时的工作放到工厂里进行,使代码更容易维护。 更符合面向对象的原则,面向接口编程,而不是面向实现编程。

缺点:就是保姆如果生病了或者不能过来了,那你将找不到你的牙刷,剃须刀,洗发水,找不到毛巾,找不到牛奶店  哈哈那你将不能自理!

还有就是实际编码场景中表现的缺点:

  1. 要新增产品类的时候,就要修改工厂类的代码,违反了开放封闭原则(对扩展的开放,对修改的关闭)。

  1. 简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等级结构。

逼逼了这么多还是上代码吧


public abstarct class DoingSomthing{

    public abstarct void doing();

}

//拿毛巾

public class Yashua extends DoingSomthing{

    @Override

    public void doing(){

    System.out.println("牙刷放这里了");

    }

}

//拿毛巾

public class Maojin extends DoingSomthing{

    @Override

    public void doing(){

    System.out.println("毛巾放这里了");

    }

}

//拿剃须刀

public class Tixudao extends DoingSomthing{

    @Override

    public void doing(){

    System.out.println("剃须刀放这里了");

    }

}

//我需要的工厂/保姆

public class MyFactory{

    private MyFactory(){}

    public static Mydoing createMyFactory(String type){

        if("yashua".equals(type)){

            return new Yashua ();

        }else if("maojin".equals(type)){

            return new Maojin ();

        }else if("tixudao".equals(type)){

            return new Tixudao ();

        }else{

            return null;

        }

    }

}

//demo main

public class TestDemo{

    public static void main(String[] agrs){

        MyFactory mf=new MyFactory.createMyFactory("yashua");

        mf.doing();

             new MyFactory.createMyFactory("maojin");

        mf.doing();

        new MyFactory.createMyFactory("tixudao");

        mf.doing();            

         // NullPointerException

        mf=new MyFactory.createMyFactory("niunai");

        if(mf!=null){

            mf.doing();

        }else{

            System.out.println("工厂中没有!");

        }

    }

}





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值