![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
豫北小蚂蚁
这个作者很懒,什么都没留下…
展开
-
Java代理模式
代理原创 2023-02-01 10:17:13 · 1055 阅读 · 0 评论 -
抽象类和接口的区别
本身的设计目的就是不同的。 大家讲的都很详细了,我说说我自己的一点浅薄的理解。 我一直认为,工科的知识有个很明显的特点:“以用为本”。在讨论接口和抽象类的区别时,我也想从“用”的角度试着总结一下区别,所以我想到了设计目的。 接口的设计目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。对“接口为何是约束...原创 2021-04-01 15:22:55 · 88 阅读 · 0 评论 -
java 统一的返回bean对象
1 以Map形式返回public class JsonResult extends HashMap{ private static final String STATUS_OK = "isOk"; private static final String STATUS_FAIL = "isFail"; public JsonResult() { } ...原创 2019-10-21 09:33:34 · 635 阅读 · 0 评论 -
中介/真正的朋友/间接的不互相知晓
1 room/** * 房间 * Created by user on 2019/4/13. */public class Room { public float area; public float price; public Room(float area, float price) { this.area = area; ...转载 2019-04-13 00:58:08 · 110 阅读 · 0 评论 -
命令模式/俄罗斯方块-将方法提升到对象操作(可以实现方法的拦截)是对方法的抽象,不是对对象的抽象(餐厅下菜单)
1命令/** * 命令 抽象类 */public interface Command { public void execute();}2具体命令/** * 具体命令 */public class RightCommand implements Command { //持有一个接收者对象的引用 private TetrisM...转载 2019-04-17 10:55:26 · 146 阅读 · 0 评论 -
观察者模式/程序员订阅技术刊(观察者与被观察者之间完全解耦)
1观察者-程序员/** * 程序员 观察者观察技术前线 */public class Coder implements Observer { public String name; public Coder(String name){ this.name = name; } @Override public void updat...转载 2019-04-22 14:56:44 · 223 阅读 · 0 评论 -
模版设计模式(流程封装)/计算机开启(startUp中的几个算法步骤称为一个套路-模版)固定的执行顺序不能被子类修改,子类只能替换某些具体的算法策略
1计算机正常开启模版 (模版方法隐藏了具体的执行流程)/** * 抽象的Computer */public class AbstractComputer { protected void powerOn(){ Log.i("***","开启电源"); } protected void checkHardware(){ ...转载 2019-04-22 16:14:33 · 169 阅读 · 0 评论 -
Builde设计模式/ImageLoader例
1使用Builder创建Config/** * config的Builder模式创建 * Config只有变量和私有构造 === 设置项在builder中完成 */public class ImageLoaderConfig { //线程默认数 cup数量+1 int threadCount = Runtime.getRuntime().availableProce...原创 2019-04-15 11:01:47 · 266 阅读 · 0 评论 -
原型模式(Prototype)//clone克隆
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:public class Prototype implements Cloneable, Serializable { ...转载 2019-07-05 10:45:49 · 371 阅读 · 0 评论 -
开闭原则/ImageCache/设置不同缓存
1缓存类的功能/** * 缓存功能 */public interface ImageCache { public void put(String url, Bitmap bitmap); public Bitmap get(String url);}2内存缓存/** * 内存缓存 */public class MemeryCache impleme...转载 2019-04-12 18:35:37 · 295 阅读 · 0 评论 -
状态模式/电视遥控器(开关机状态)[开机-点关机--切换为关机状态(外界不参与情况自身可以改变状态)] 与策略区别
1遥控器功能接口 (tvState-PowerController两个接口可以合并一个)/** * 电视状态 */public interface TvState { public void nextChannel(); public void prevChannel(); public void turnUp(); public void turnD...转载 2019-04-12 15:06:02 · 514 阅读 · 0 评论 -
TabLayout+ViewPage+Fragment设计模式(固定几种请求失败.空的事件处理)
BaseFragment/** * Created by HASEE. */public abstract class BaseFragment extends Fragment{ private LoadingPage loadingPage; @Nullable @Override public View onCreateView(LayoutIn...转载 2019-03-16 16:24:30 · 99 阅读 · 0 评论 -
OkHttp封装 BaseProtocol+Protocol添加本地缓存/FileReader+FileWriter
BaseProtocolpublic abstract class BaseProtocol<T>{ //获取数据 public T getData(String url,int index){ //1.先拿缓存,如果缓存中的数据有效(缓存数据有没有过期),则展示缓存 String json = getDataFromLocal(u...转载 2019-03-16 17:05:24 · 181 阅读 · 0 评论 -
拆分界面 ScrollView +FramLayout.addView方式(ScrollView+LinearLayout可以展示内容超过界面大小)
Activity 向几个FramLayout 中添加View来展示public class DetailActivity extends Activity { @BindView(R.id.fl_app_info) FrameLayout flAppInfo; @BindView(R.id.fl_app_safe) FrameLayout flAppSa...转载 2019-03-21 21:27:44 · 376 阅读 · 0 评论 -
Retrofit+MVP/BasePresenter封装(公共处理网路请求异常)
1 BasePresenter/** * Created by HASEE. * 封装项目中所有网络请求基类 */public abstract class BasePresenter { public ResponseInfoApi responseInfoApi; private HashMap<String,String> errorMap = ne...原创 2019-04-01 21:25:27 · 352 阅读 · 0 评论 -
状态模式LoginContext(登陆/未登录)
登陆LoginContext1使用LoginContext.getLoginContext().setUserState(new LoginedState());LoginContext.getLoginContext().forward(context);//调此转发函数2具体代码package com.ycjr.navpad_new.ui.activity;imp...转载 2019-04-12 10:44:25 · 2053 阅读 · 1 评论 -
单例推荐模式(枚举据说最优,静态内部类最推荐)
1e汉 (优:没有同步开销 缺:不使用时会进行初始化-消耗资源)public class Single{ private static final Single mSingle = new Single; private Single(){} public static Single getSingle(){ return mSingle; ...转载 2019-04-12 11:48:13 · 531 阅读 · 1 评论 -
策略模式/交通费用 [需要外部给予策略才会就行改变执行函数实现,自身不会进行切换----与状态模式区别]
1计算接口/** * 计算接口 */public interface CalculatorStrategy { int calculatePrice(int km);}2公交策略/** * 公交计算策略 */public class BusStrategy implements CalculatorStrategy { @Override ...转载 2019-04-15 17:33:23 · 105 阅读 · 0 评论 -
责任连模式/报账(最大缺点--对链中请求的处理者遍历/递归要慎重)
1抽象领导/** * 处理报账的 抽象领导 */public abstract class Leader { Leader nextLeader;//上级领导 //处理报账申请 public void handleRequest(int money) { if (money <= limit()){ handle...转载 2019-04-15 18:00:25 · 78 阅读 · 0 评论