架构设计----MVC初步认识

作者: pgydbh | 来源:发表于2018-05-14 13:19 被阅读34次

    目录

    目录.png

    什么是MVC

    view ---- xml
    model ---- 存放数据和对于数据的操作的类
    controller ---- 存放数据与页面逻辑的类 比如 Activity Fragment

    MVC结构

    结构.png

    MVC流程

    C拥有M的句柄,逻辑全部由C控制

    demo

    github地址:https://github.com/pgyCode/MvcDemo

    核心代码

    Contract
    public interface BookContract {
    
        interface Model{
            //模拟初始化
            List<String> init();
            //模拟添加
            void add(String str);
        }
    
        interface Controller{
            void init();
            void add(String str);
        }
    }
    
    Model
    public class BookModel implements BookContract.Model {
    
        //使用单例模式,防止出现多份数据
        private static Object object = new Object();
        public static BookModel instance;
        public static BookModel getInstance() {
            synchronized (object){
                if (instance == null)
                    return new BookModel();
                else
                    return instance;
            }
        }
    
        public List<String> strings = null;
    
        @Override
        public List<String> init() {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            strings = new LinkedList<>();
            strings.add("1");
            strings.add("2");
            strings.add("3");
            strings.add("4");
            strings.add("5");
            strings.add("6");
            strings.add("7");
            strings.add("8");
            return strings;
        }
    
        @Override
        public void add(String str) {
            strings.add(str);
        }
    }
    
    Controller
    public class BookActivity extends AppCompatActivity implements BookContract.Controller {
    
        private BookContract.Model model;
    
        private ListView lst;
        private BookAdapter bookAdapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.book);
    
            model = BookModel.getInstance();
            lst = findViewById(R.id.lst);
            init();
    
            findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    add("测试添加");
                }
            });
        }
    
        @Override
        public void init() {
            new AsyncTask<Void, Void, List<String>>(){
    
                @Override
                protected List<String> doInBackground(Void... voids) {
                    return model.init();
                }
    
                @Override
                protected void onPostExecute(List<String> strings) {
                    super.onPostExecute(strings);
                    bookAdapter = new BookAdapter(BookActivity.this, strings);
                    lst.setAdapter(bookAdapter);
                }
            }.execute();
        }
    
        @Override
        public void add(final String str) {
            new AsyncTask<Void, Void, Void>(){
    
                @Override
                protected Void doInBackground(Void... voids) {
                     model.add(str);
                     return null;
                }
    
                @Override
                protected void onPostExecute(Void avoid) {
                    super.onPostExecute(avoid);
                    bookAdapter.notifyDataSetChanged();
                }
            }.execute();
        }
    }
    

    相关文章

      网友评论

        本文标题:架构设计----MVC初步认识

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