Android开发Android技术知识程序员

Android设计模式

2018-06-08  本文已影响29人  messi_wpy

1. 设计模式之抽象工厂模式


在学习抽象工厂模式前要先了解一下工厂模式,而抽象工厂模式主要就是为了弥补工厂模式的缺点的,抽象~遵循了开闭原则

设计原则之开闭原则 (Open Close Principle,缩写OCP)
类、模块、函数等对于拓展是开放的,但是对于修改是封闭的,当软件需要变化时,应该尽量通过拓展的方式来实现变化,而不是通过修改已有的代码来实现。(接口)
附上链接

1.  abstract class BMW {  
2.  public BMW(){  

4.  }  
5.  }  
6.  public class BMW320 extends BMW {  
7.  public BMW320() {  
8.  System.out.println("制造-->BMW320");  
9.  }  
10.  }  
11.  public class BMW523 extends BMW{  
12.  public BMW523(){  
13.  System.out.println("制造-->BMW523");  
14.  }  
15.  }  

创建工厂类:

1.  interface FactoryBMW {  
2.  BMW createBMW();  
3.  }  

5.  public class FactoryBMW320 implements FactoryBMW{  

7.  @Override  
8.  public BMW320 createBMW() {  

10.  return new BMW320();  
11.  }  

13.  }  
14.  public class FactoryBMW523 implements FactoryBMW {  
15.  @Override  
16.  public BMW523 createBMW() {  

18.  return new BMW523();  
19.  }  
20.  }
 //发动机以及型号    
  public interface Engine {    

 }    
 public class EngineA extends Engine{    
  public EngineA(){    
  System.out.println("制造-->EngineA");    
 }    
  }    
  public class EngineBextends Engine{    
  public EngineB(){    
 System.out.println("制造-->EngineB");    
  }    
  }    

 //空调以及型号    
  public interface Aircondition {    

  }    
 public class AirconditionA extends Aircondition{    
  public AirconditionA(){    
  System.out.println("制造-->AirconditionA");    
 }    
  }    
  public class AirconditionB extends Aircondition{    
 public AirconditionB(){    
  System.out.println("制造-->AirconditionB");    
  }    
 }   

创建工厂类:
  //创建工厂的接口    
  public interface AbstractFactory {    
 //制造发动机  
  public Engine createEngine();  
  //制造空调   
  public Aircondition createAircondition();   
 }    

 //为宝马320系列生产配件    
  public class FactoryBMW320 implements AbstractFactory{    

  @Override    
  public Engine createEngine() {      
return new EngineA();    
  }    
 @Override    
  public Aircondition createAircondition() {    
  return new AirconditionA();    
 }    
  }    
  //宝马523系列  
 public class FactoryBMW523 implements AbstractFactory {    

  @Override    
  public Engine createEngine() {      
  return new EngineB();    
  }    
  @Override    
  public Aircondition createAircondition() {    
  return new AirconditionB();    
  }    
  }

参考https://blog.csdn.net/jason0539/article/details/44976775


2.android设计模式之策略模式

策略模式跟上面工厂模式也有相似,都是利用调用方法是传入不同的接口对象

//定义一类的策略接口
interface ComputerStrategy{
      int computer(int num);
}

//定义一些不同的类实现接口
public class ComputerA implement ComputerStrategy{
      public int computer(int mun){
        ....
 }
}
public class ComputerB implement ComputerStrategy{
    ....
}

//定义一个方法,引用该接口(可以创一个类在封装一下这个方法)
  public  int  Computer(ComputerStrategy computers){
      computers.computer(..);
}

更好的代码参考:https://blog.csdn.net/qq_25806863/article/details/68623134

上一篇 下一篇

猜你喜欢

热点阅读