设计模式,代码结构
文章平均质量分 70
空白的泡
做过很多东西,学过很多东西。
希望自己不要成为碌碌无为的人!
展开
-
Java七大设计原则 - 里氏替换原则 (Liskov Substitution Principle)
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。- 任何基类出现的地方、子类一定可以出现- 在程序中尽量使用基类的类型来 定义对象、在运行时确认子类子类,用子类对象替换父类对象实现“开-闭”原则的关键步骤就是抽象化。原创 2022-12-26 17:49:48 · 396 阅读 · 0 评论 -
Java七大设计原则 - 开闭原则
(对扩展开放是针对提供方来说的,对修改关闭是针对调用方来说的。)原创 2022-12-26 16:56:03 · 1877 阅读 · 0 评论 -
Java七大设计原则 - 接口隔离原则
原则含义: 一个类对于另外一个类的依赖应该建立在最小的接口上1. 接口隔离原则” 实际上它是建立在另一种设计原则之上(依赖倒置)的,即“面向接口编程,而 不是针对实现编程” 类之间的依赖不再是“真实类型“、而是 “表面类型”。2. “单一职责”原则要求类和接口职责单一,注重的是职责,是业务逻辑上的划分,“接口隔离”原则要求方法要尽可能的少,是在接口设计上的考虑。//定义了4种行为void aa();}// 实际B只会实现 aa abvoid aa();}原创 2022-12-26 11:26:58 · 876 阅读 · 0 评论 -
Java 七大设计原则 - 单一职责原则
2. 司机开车 和 停车在一个方法里面、如果业务复杂、会导致业务变化出现bug概率变大。1. 一个类只负责一项《核心业务》 (降低类的复杂度、耦合性、逻辑更内聚)。3. 降低业务变化的影响范围、减少系统稳定性风险。对方法来说: 一个方法只负责一种精准业务的实现。对类来说: 一个类只负责一项职责、2. 提高类的可读性,可维护性。原创 2022-12-25 18:35:57 · 208 阅读 · 0 评论 -
Java 七大设计原则 - 依赖倒置原则/面向接口编程
1.每个类尽量都要有接口或抽象类,或者抽象类和接口都有: 依赖倒置原则的基本要求,有抽象才能依赖倒置2.变量的表面类型尽量是接口或者抽象类3.任何类都不应该从具体类派生4. 尽量不要重写基类已经写好的方法(里式替换原则)5. 结合里式替换原则来使用: 结合里式替换原则和依赖倒置原则我们可以得出一个通俗的规则,接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现精准的实现业务逻辑,同时在适当的时候对父类进行细化。原创 2022-12-24 19:19:14 · 1018 阅读 · 0 评论 -
软件架构模式 mark Richards - 读后总结 6 - 整合
1. 分层架构 (Layered) 任何时候都可以用,并且任何时候都适用(mvc等设计模式的思路也是一致来源) 性能:偏低2. 事件驱动架构 (Event-drivent)它有很⾼高 的适应性,使得它在⼩小型应⽤用、⼤大型应⽤用、复杂应⽤用中都能表现得很好。事件驱动架构模式由⾼高度解耦、单 ⼀一⺫⽬目的的事件处理组件构成,这些组件负责异步接收和处理事件 性能:高3. 微内核架构 (Microkernel)微内核架构模式(也称为插件化应⽤用架构)对于基于产...原创 2022-02-15 17:25:24 · 256 阅读 · 0 评论 -
软件架构模式 mark Richards - 读后总结 5 - 基于空间的架构
大多数基于⽹网站的商务应⽤用都遵循相同的请求流程:一个请求从浏览器发到web服务器,然后到应⽤用服务 器,然后到数据库服务器。虽然这个模式在⽤用户数不大的时候工作良好,但随着⽤用户负载的增加,瓶颈会开始 出现,⾸首先出现在web服务器层,然后应用服务器层,最后数据库服务器层。通常的解决办法就是向外扩 展,也就是增加服务器数量。这个方法相对来说简单和廉价,并能够解决问题。然而,对于大多数⾼高访问量 的情况,它只不过是把web服务器的问题移到了应用服务器。而扩展应⽤用服务器会更复杂,而且成本更⾼高, 并且⼜又只原创 2022-02-15 17:02:04 · 1599 阅读 · 0 评论 -
软件架构模式 mark Richards - 读后总结 4 - 微服务架构
微服务架构模式作为替代单体应⽤用和⾯面向服务架构的⼀一个可⾏行的选择,在业内迅速取得进展。由于这个架构 模式仍然在不断的发展中,在业界存在很多困惑——这种模式是关于什么的?它是如何实现的?本报告的这 部分将为你提供关键概念和必要的基础知识来理解这⼀一重要架构模式的好处(和取舍),以此来判断这种架构 是否适合你的应⽤用。 不管你选择哪种拓扑或实现风格, 有几种常见的核心概念适用于一般架构模式。第一个概念是 单独部署单元 。 微服务架构的每个组件都作为一个独立单元进行部署,让每...原创 2022-02-15 16:26:44 · 1436 阅读 · 0 评论 -
软件架构模式 mark Richards - 读后总结 3 - 微内核架构
微内核架构模式(也称为插件化应⽤用架构) 对于基于产品的应用程序来说是一个很自然的选择。基于产品的应用是指一个经过打包的、可以通过版本下载的⼀一个典型的第三方产品。然而,很多公司也会开发和发布他们 的内部商业软件,完整的版本号、发布日志和可插拔的新特性,这些就非常符合微内核架构的思想。微内核 架构模式可以通过插件的形式添加额外的特性到核⼼心系统中,这提供了很好的扩展性,也使得新特性与核心 系统隔离开来。微内核架构的最好示例就是⼤大家熟知的Eclipse IDE了。下载最基本的Eclipse后,原创 2022-02-15 15:45:45 · 428 阅读 · 0 评论 -
软件架构模式 mark Richards - 读后总结 2 事件驱动架构
事件驱动架构模式是⼀一种主流的异步分发事件架构模式,常⽤用于设计⾼高度可拓展的应⽤用。当然了,它有很⾼高 的适应性,使得它在⼩小型应⽤用、⼤大型应⽤用、复杂应⽤用中都能表现得很好。事件驱动架构模式由⾼高度解耦、单 ⼀一⺫⽬目的的事件处理组件构成,这些组件负责异步接收和处理事件。 事件驱动架构模式包含了两种主要的拓扑结构:中介(mediator)拓扑结构和代理(broker)拓扑结构。 mediator 拓扑结构通常在你需要在事件内使⽤用⼀一个核⼼心中介分配、协调多个步骤间的关系、执⾏行顺序时使 ⽤用;⽽而代原创 2022-02-15 10:21:50 · 1569 阅读 · 0 评论 -
软件架构模式 mark Richards - 读后总结 1 - 分层架构
单独原创 2022-02-14 17:49:53 · 426 阅读 · 0 评论 -
gallery activity 控制器
public class AbstractGalleryActivity extends Activity {}abstract public class ActivityState { protected AbstractGalleryActivity mActivity; protected Bundle mData; protected int mFlags; void initialize(AbstractGalleryActivity activit.原创 2020-11-30 17:34:19 · 179 阅读 · 0 评论 -
代码结构调整,枚举 enum
枚举, 今天在优化代码时,觉得很多代码public static final xxx 的方式,都可以优化一下,并且将来很多同类型的数据进行整合,就想到了枚举, 也特地百度,复习了一下, 很多都是 copy的只为了学习for example<1 public enum TypeEnum {ONE, TWO, THREE } <2 枚举限定值public enum TypeEnum { O原创 2017-12-18 14:51:54 · 374 阅读 · 0 评论 -
Builder 模式
Android Builder模式, 在开发中的应用什么时候使用build模式?参数较多,很多可不填写的使用默认配置Android Builder模式在开发中的应用,加载框架Glide的时Glide.with(mContext) .load(url) .centerCrop() .placeholder(R.drawable.default_img)原创 2017-12-18 14:47:23 · 225 阅读 · 0 评论 -
Android官方架构组件介绍之LifeCycle
下面是官方提供的Android App开发的架构图:从上图可以看到一些关键字:ViewModel,LiveData,Room等。其实看了上面视频的会发现Google官方Android架构组件一共包括以下几个:LifeCycle : 与Activity和Fragment的生命周期有关LiveData :异步可订阅数据,也是生命周期感知ViewModel :视图数据持有模型,也是生命周期感知Room ...转载 2018-05-10 15:22:53 · 294 阅读 · 0 评论 -
Android Data Binding
Android Data Binding https://developer.android.google.cn/topic/libraries/data-binding/index.html 最近做完了新项目,里面用到了, lifecycle, Android Data Binding, mvvm基础的只是就不复制黏贴了,网上太多了, 下面只总结经验其中有几篇讲的很细的,还有其他的也可以留...原创 2018-05-14 11:14:26 · 699 阅读 · 0 评论 -
设计模式
后面又时间了会好好整理一下###### 装饰 装饰模式动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 动态的给一个对象,而不是对整个类添加额外职责,说明此模式将采用的结构是组合而不是继承;要给一个对象添加职责,通常可以使用其类的派生类对象替换当前对象,但这显得不够灵活,继承结构属于静态形式,系统往往并不知道有这样的类存在;ConcreteComp原创 2017-03-11 16:32:00 · 320 阅读 · 0 评论 -
模式控制
1. email 中的模式控制 class ViewMode{ List mListtener = new ArrayList<ViewModeOberver>; Mode nowMode; ViewMode mViewMode public static viewMode getIntance(){ ...原创 2019-06-13 10:13:04 · 204 阅读 · 0 评论 -
App 文档方案
1.迅捷思维导图1.1 思维导图 描述大概分类 -- 迅捷思维导图1。2 流程图 描述大体分类 -- 迅捷思维导图2.startUML https://blog.csdn.net/Granery/article/details/866799652.1 类关系图虚线dependency 代表依赖实线有很多,其中association 代表关联...原创 2019-09-30 10:25:47 · 146 阅读 · 0 评论 -
外观模式
优点:多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。系统间的相互依赖关系减少到了最少,提供简单、单一的屏障。缺点:违背了“开闭原则”,因为增加新的子系统可能需要修改外观类或客户端的源代码。外观模式又叫门面模式主要角色外观(Facade)角色:为多个子系统对外提供一个共同的接口。子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访...原创 2019-09-30 10:48:32 · 101 阅读 · 0 评论 -
代码结构
以前知道有这个样子的 {// 这里跳出就和平常一样 breadk; 就好了}今天见到了keeprunning:{if( 1==1 ){ //类似要跳出的时候 要这么写 break keeprunning; }}原创 2017-01-14 17:36:46 · 485 阅读 · 0 评论