Java基础__设计模式 哥只想说这个面试很多次被用到

说实在的我能念出名字的模式,也就一两个,一般面试的时候会问你知道几个设计模式,能不能写一个模式

所以我现在复习下。。。都半夜3点了,,,有点抽最近。

工厂模式: 大致思路,多个子类实现接口,然后写一个工厂类,判定是哪一个子类,main中实例化工厂类,输入判定参数,用父类接口 获取某个子类,然后调用子类方法

//父类接口

public  interface father {
         void run(String type);
}

//子类接口1

public class childOne implements father {
      public void run() {
           System.out.println("one run");

        }

      @Override
      public void run(String type) {
          // TODO Auto-generated method stub
         System.out.println("one run"+"  调用子类"+type);
      }

}

//子类接口2

public class childTwo implements father {
       public void run() {
               System.out.println("two run");

         }

        @Override
          public void run(String type) {
         // TODO Auto-generated method stub
           System.out.println("two run"+"  调用子类"+type);
           }

}

//工厂类

public class factory {

  father test(String type){
  if(type.equals("one")){
   return new childOne();
  }else if(type.equals("two")){
   return new childTwo();
  }else{
   System.out.println("只能输入两个值");
  }
  return null;
 }
}

//主函数

 public static void main(String[] args) throws IOException{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String type = br.readLine();
 
  factory f = new factory();
  father o = f.test(type);
  o.run(type);
 }


//单列模延迟加载
public class model {
 //持有私有静态实例,防止被引用,
 private static model instance = null;
 //私有化构造方法,防止被实例化
 private model(){};
 //静态方法,创建实例
 public static model getInstance(){
  if(instance == null){
   instance = new model();
  }
  return instance;
  
 }
 public Object readResolve(){
  return instance;
  
 }
 
}


//建造者模式

  1. public class Builder {  
  2.       
  3.     private List<Sender> list = new ArrayList<Sender>();  
  4.       
  5.     public void produceMailSender(int count){  
  6.         for(int i=0; i<count; i++){  
  7.             list.add(new MailSender());  
  8.         }  
  9.     }  
  10.       
  11.     public void produceSmsSender(int count){  
  12.         for(int i=0; i<count; i++){  
  13.             list.add(new SmsSender());  
  14.         }  
  15.     }  
  16. }  
  17. public class Test {  
  18.   
  19.     public static void main(String[] args) {  
  20.         Builder builder = new Builder();  
  21.         builder.produceMailSender(10);  
  22.     }  
  23. }  


从这点看出,建造者模式将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。所以与工程模式的区别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分。因此,是选择工厂模式还是建造者模式,依实际情况而定。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值