美文网首页
在代码中找设计原则

在代码中找设计原则

作者: 王小贱_ww | 来源:发表于2017-07-25 23:13 被阅读20次

    1

    写代码中不要去想什么SOLID原则 ,正确的做法是在写代码的过程中总结出原则(多写代码)
    对于TripManager类,我们只需要让它开始和结束两个动作,不要让这个类过于复杂,过于耦合,不利于扩展,根据力度来分配。结束后,我们还需要上传数据,这个方法就不要放在TripManager中来写了。

    2

    职责细分,该是谁的就是谁的,单一职责

    public class TripTransfer {
    //结束时上传和广播有网络的时候上传
        public void uploadData() {
            
        }
    }
    

    3

    TripTracker典型的外观类,它不用管需要用什么坐标系、数据来源,因为这些都是在子系统中实现的,它只负责实例化和产生结果。

    public class GpsTracker {
    
        private onGpsChangedListener mlistener;
        private boolean mUserGps;
        private boolean mUseNetwork;
        private int type;
    
        private GpsTracker(Builder builder) {
            type = builder.type;
        }
    
        public void startLocation() {
            
    
        }
        .....有省略...........
    

    在startLocation()里,我们需要知道是用百度地图还是高德地图,如果我们在GpsTracker 类中声明了使用百度地图,当需求改变是,我们又要改变这个类,让发生变化交给别人去做,自己这个类尽量不发生变化。在这里我们采用工厂方法。

    抽象方法
    public abstract class LocationTracker {
        private boolean mUserGps;
        private boolean mUseNetwork;
    
        public LocationTracker(boolean mUserGps, boolean mUseNetwork) {
            this.mUserGps = mUserGps;
            this.mUseNetwork = mUseNetwork;
        }
    
        public abstract void startLocation();
    
        public abstract void stopLocation();
    
        public interface LocationChangedListener {
    
            void onLocationChanged(GpsTracker.GpsEntity entity);
        }
    }
    
    继承去实现两个方法
    public class DefaultLocationTracker extends LocationTracker {
    
        public DefaultLocationTracker(boolean mUserGps, boolean mUseNetwork) {
            super(mUserGps, mUseNetwork);
        }
    
        @Override
        public void startLocation() {
    
        }
    
        @Override
        public void stopLocation() {
    
        }
    }
    
     public void startLocation() {
            mTracker = LocationTrackerFactory.newTracker(type);
            mTracker.startLocation();
    在factory中去配置
        }
    
    
    public class LocationTrackerFactory {
        public static LocationTracker newTracker(int type) {
            return null;
        }
    }
    

    以上代码中,最能体现出单一原则,一个类负责一件事情
    开放封闭原则 里氏替换原则 接口分离原则 依赖倒置原则这四个,别急,慢慢来!!!

    相关文章

      网友评论

          本文标题:在代码中找设计原则

          本文链接:https://www.haomeiwen.com/subject/fcigkxtx.html