Android的设计模式

总述

工厂设计模式



public class test {

       public static void main(String[] args) {

              Location position= new LocationFactory().getInstance("xiaomi");

              position.getPosition();

              position.getCityName(10, 20);

       }

}



class LocationFactory{

       public static Location getInstance(String type){

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

                     return new BaiduLocation();

              }else {

                     return new XiaoMiLocation();

              }

       }

}

class BaiduLocation implements Location{

       @Override

       public void getPosition() {

              // TODO Auto-generated method stub

              System.out.println("通过百度定位获取到当前的经纬度是XXXXX");

       }

       @Override

       public void getCityName(long lat, long lng) {

              // TODO Auto-generated method stub

              System.out.println("通过百度定位获取到当前的城市是XXXXX");

       }

}

class XiaoMiLocation implements Location{

       @Override

       public void getPosition() {

              // TODO Auto-generated method stub

              System.out.println("通过小米定位获取到当前的经纬度是XXXXX");

       }

       @Override

       public void getCityName(long lat, long lng) {

              // TODO Auto-generated method stub

              System.out.println("通过小米定位获取到当前的城市是XXXXX");

       }

}

/*接口的好处在于可以不通过上下级关系来分享一些共有的方法*/
interface Location{

       public void getPosition();

       public void getCityName(long lat,long lng);

}

观察者模式

通过实现接口,然后实现接口中的方法,被观察者通过notify来唤醒观察者

参照http://blog.csdn.net/sinat_28324227/article/details/49866147

代理模式

接口中的方法为代理者和被代理者都要做的方法

代码重构

//若一个方法的长度过长考虑分解,分解是注意提取带有返回值的方法来分解代码

1.好的代码从变量名就能看得出代码清晰

2.绝大多数情况下,函数应该放在它所使用的数据的所属对象A内,然后在另一个类中写一个得到A中数据的方法调用

3.想清楚代码要做的事,例如想计算不同的电影租赁价格不同,应该给Movie传类型,给Rental传租赁时长,而不应该给Movie传租赁时长

4.运用多态来代替switch中判断同属于一个对象,但是存在区别的语句跳转,不同的case下创建不同的对象

你可能感兴趣的:(日记,android,设计模式)