
设计模式
Duckdan
这个作者很懒,什么都没留下…
展开
-
23_状态模式
一、状态相关类package com.study.stateclass Activity { /** * 各个状态 */ companion object { val onCreateState = OnCreateState() val onStartState = OnStartState() val onResumeState = OnResumeState() } //当前activ...原创 2020-12-30 14:43:41 · 131 阅读 · 0 评论 -
22_模板方法模式
一、模板相关类package com.study.template_methodabstract class HummerModel { var alarmFlag = false /** * 启动车辆 */ abstract fun start() /** * 停止车辆 */ abstract fun stop() /** * 滴滴叫 */ abstract fun ala...原创 2020-12-30 14:35:41 · 129 阅读 · 0 评论 -
21_备忘录模式
一、备忘录相关类package com.study.memento/** * 视频类,记录播放视频的名称、视频地址、当前所播放的进度 */class TencentVideo(var videoName: String, var videoUrl: String, var videoPlayProgress:Int){ override fun toString(): String { return "TencentVideo(videoName='$videoNa...原创 2020-12-27 08:47:38 · 170 阅读 · 0 评论 -
20_命令模式
一、命令相关类package com.study.command/** * 命令行模式 */abstract class Command { /** * 执行命令 */ abstract fun doit() /** * 不执行命令 */ abstract fun undo()}package com.study.command/** * 删除命令 */class DeleteCommand(var...原创 2020-12-23 10:43:32 · 111 阅读 · 0 评论 -
19_桥接模式
一、桥接相关类package com.study.bridge/** * 身份 */abstract class Identity { /** * 获取当前身份类型 */ abstract fun getIdentity(): String}package com.study.bridgeclass BossIdentity : Identity() { override fun getIdentity(): String = "老板"...原创 2020-12-22 18:01:30 · 141 阅读 · 0 评论 -
18_适配器模式
一、目标类package com.study.adapter/** * 鸿蒙操作系统 */interface HarmonyOS { fun runHarmonyApp(): String}package com.study.adapter/** * 鸿蒙操作系统适配器:如果不存在这种适配器,Android的应用是无法在HormonyOS上面运行的 */class HarmonyOSAdapter : AndroidOS(), HarmonyOS { o...原创 2020-12-21 09:37:12 · 189 阅读 · 0 评论 -
17_访问者模式
一、组件package com.study.visitor/** * 组件 */interface IComponent { /** * 获取价格 */ fun getPrice(): Float /** * 访问者模式 */ fun accept(v: IVisitor)}package com.study.visitorclass CPU : IComponent { override fun ...原创 2020-12-19 18:23:31 · 163 阅读 · 1 评论 -
16_迭代器模式
一、容器及迭代器接口package com.study.iterator/** * 集合接口 */interface Collection_ { /** * 添加元素 */ fun add(element: Any) /** * 当前版本的size */ fun size(): Int /** * 获取当期容器的迭代器 */ fun getIteartor_():Iterat...原创 2020-12-15 09:30:00 · 134 阅读 · 0 评论 -
15_享元模式
一、运用享元模式的类package com.study.flyweightobject PhonePool { //某互联网公司采购了一批华为手机用于测试 val huaWeiPhonePool: ArrayList<HuaWeiPhone> by lazy { val tempPool = arrayListOf<HuaWeiPhone>() for (i in 0..3) { val random =原创 2020-12-11 09:30:46 · 112 阅读 · 0 评论 -
14_组合模式
一、结点类package com.study.compositeinterface INode { /** * 打印当前节点的信息 */ fun print()}package com.study.composite/** * 树节点 * nodeName当前结点名称 * depth当前结点的深度 */class BranchNode(private val nodeName: String, private val depth: Int...原创 2020-12-10 09:45:54 · 112 阅读 · 0 评论 -
12_责任链模式
一、责任链package com.study.responsibility.kotlin/** * 责任链 */class FilterChain { private var filterList = mutableListOf<Filter>() var index = 0 fun addFilter(filter: Filter): FilterChain { filterList.add(filter) retur...原创 2020-12-04 16:29:37 · 140 阅读 · 0 评论 -
11_门面模式(外观模式)
一、子系统package com.study.facade_pattern/** * 登录功能 */class LoginFunction { fun function() { println("登录功能") }}package com.study.facade_pattern/** * 市场功能 */class MarketFunction { fun function() { println("市场功能") ...原创 2020-12-01 08:39:20 · 123 阅读 · 0 评论 -
10_原型模式
一、实现可克隆的类package com.study.prototypeimport java.util.*/** * 实现Cloneable接口,kotlin实现时不用导包。我在创建这个类的时候,点击Cloneable是跳不到对应类的。 * */class Phone(var color:String,var version:String,var date: Date): Cloneable { @Throws(CloneNotSupportedException::cl原创 2020-11-21 16:40:06 · 174 阅读 · 0 评论 -
09_单例模式
一、懒汉式1.1 双重检查机制package com.study.single_instance.java.lazy;public class DoubleCheckSingleInstance { /** * 禁止重排序:volatile关键字保证所有线程都能看到共享内存的状态,保证了内存的可见性。 * 用volatile修饰的共享变量在进行写操作的时候,当前处理器缓存行的数据写回到系统内存, * 同时使得其它CPU缓存了该内存地址的数据无效。原创 2020-11-21 09:21:45 · 201 阅读 · 1 评论 -
08_建造者模式(方式二)
一、实体类package com.study.builder_pattern.v2;public class Computer { private String monitor; private String mouse; private String host; private String cpu; private Computer(ComputerBuilder computerBuilder){ this.monitor=comp...原创 2020-11-18 12:21:05 · 179 阅读 · 0 评论 -
07_建造者模式(方式一)
一、建造者package com.study.builder_patternabstract class AbstractComputerBuilder { /** * 设置显示器 */ abstract fun buildMonitor(monitor:String) /** * 设置鼠标 */ abstract fun buildMouse(mouse:String) /** * 设置主机 ...原创 2020-11-18 12:17:15 · 130 阅读 · 0 评论 -
06_抽象工厂模式
一、工厂类package com.study.abstract_factory.factoryimport com.study.abstract_factory.product.PhoneType/** * 工厂接口 */interface IFactory { fun <T> createPhone(phoneType: PhoneType): T}package com.study.abstract_factory.factoryimport com....原创 2020-11-17 09:18:06 · 116 阅读 · 0 评论 -
05_工厂方法模式
一、工厂类package com.study.factorymethod//用作约束abstract class Factory { abstract fun productPhone():IPhone}package com.study.factorymethodclass HuaWeiPhoneFactory:Factory() { override fun productPhone() =HuaWeiPhoneImpl()}package com.stud...原创 2020-11-16 20:14:40 · 94 阅读 · 0 评论 -
04_简单工厂模式
一、产品类package com.study.simple_factory/** * 定义手机接口 */interface IPhone { /** * 打电话 */ fun call() /** * 发送短信 */ fun sendMsg() /** * 玩游戏 */ fun playGame()}package com.study.simple_factory/*...原创 2020-11-16 19:08:47 · 131 阅读 · 0 评论 -
03_装饰模式
一、装饰类package com.study.decorator/** * 明星接口: * 基本要求:好看,有才艺 */interface IStar { fun beautiful() fun talentAndSkill()}package com.study.decorator/** * 装饰抽象类 */abstract class Decorator(private val star: IStar) : IStar { override ...原创 2020-11-13 16:40:24 · 90 阅读 · 0 评论 -
02_代理模式
一、代理类package com.study.proxy/** * 代理类 */interface StarCompany { /** * 唱歌 */ fun singingMusic(str: String)}package com.study.proxy/** * 代理类 */class StarCompanyProxy(private val starCompany: StarCompany = LiuDeHua()) : Sta...原创 2020-11-13 15:54:08 · 147 阅读 · 0 评论 -
01_策略模式
一、策略类package com.study.strategy/** * 先定义一个策略的接口 */interface IStrategy { fun operate(str: String)}package com.study.strategyclass FirstStrategy : IStrategy { override fun operate(str: String) { println("第一个操作策略是:$str") }}...原创 2020-11-13 11:07:29 · 138 阅读 · 0 评论 -
13_观察者模式
一、被观察者(Demo中的角色:ZhengFuObservable)(ZhengFuObservable)政府相关政策发生改变,立即通知它的观察者。具体源码实现如下所示:package com.study.observerimport java.util.*class ZhengFuObservable : Observable() { /** * 政策更新...原创 2018-12-11 10:40:00 · 450 阅读 · 0 评论