当前位置: 首页 > news >正文

男女做那个能看的视频网站google play官网下载

男女做那个能看的视频网站,google play官网下载,企业加盟网站建设,wordpress 电影下载站源码策略模式:一种行为型模式,这些设计模式特别关注对象之间的通信。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 介绍 意图:定义一系列的算…

策略模式:一种行为型模式,这些设计模式特别关注对象之间的通信。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

介绍
  • 意图:定义一系列的算法、策略或行为,把它们封装成一个一个的策略类,
  • 主要解决问题:在有多种相似算法、策略或行为的情况下,使用 if...else 所带来的复杂和难以维护
  • 关键代码:实现同一个接口
  • 优点:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
  • 缺点:1、策略类会增多。 2、所有策略类都需要对外暴露(这有点违背设计模式六大原则的迪米特法则)。

举个例子:绘制三角形、圆形、矩形图案(Android Kotlin 自定义View)

步骤1:创建一个接口

interface Strategy {fun runCanvas(canvas: Canvas?)
}

步骤2:创建实现接口的实体类。

class Triangle:Strategy {override fun runCanvas(canvas: Canvas?) {// 绘制一个三角形行为// ......}
}
class Circular:Strategy {override fun runCanvas(canvas: Canvas?) {// 绘制一个圆形行为// ......}
}
class Rectangle:Strategy {override fun runCanvas(canvas: Canvas?) {// 绘制一个矩形形行为// ......}
}

步骤3:创建上下文类。

//创建 Context 类。
//class Context(private val strategy: Strategy) {
//    
//    fun executeStrategy(canvas: Canvas?){
//        return strategy.runCanvas(canvas)
//    }
//}class CustomView(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : View(context, attrs, defStyleAttr, defStyleRes) {constructor(context: Context) : this(context, null, 0)constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : this(context, attrs, defStyleAttr,0)private var strategy: Strategy? = nullfun setStrategy(strategy: Strategy?) {this.strategy = strategy}override fun onDraw(canvas: Canvas?) {strategy?.runCanvas(canvas)super.onDraw(canvas)}}

步骤:使用

//        使用 Context 来查看当它改变策略 Strategy 时的行为变化。
//        var context = Context(Triangle())
//        context.executeStrategy(canvas)
//        var context = Context(Circular())
//        context.executeStrategy(canvas)
//        var context = Context(Rectangle())
//        context.executeStrategy(canvas)//      改变策略 StrategycustomView.setStrategy(Triangle())customView.invalidate()//触发执行draw方法customView.setStrategy(Circular())customView.invalidate()customView.setStrategy(Rectangle())customView.invalidate()

http://www.hengruixuexiao.com/news/49972.html

相关文章:

  • 长沙网站优化公司常用的seo工具的是有哪些
  • 大连做网站seo网站快速收录教程
  • 个人做房产网站windows优化大师要会员
  • dedecms 做电商网站seo交流中心
  • 郑州企业网站优化多少钱长沙网络推广服务
  • 假淘宝网站怎么做安卓优化大师新版
  • 火车头更新wordpress商品标题seo是什么意思
  • 招聘网站比对表怎么做热点军事新闻
  • 网站优化 检测响应速度seo公司发展前景
  • 遂川网站建设百度网盘资源搜索引擎搜索
  • 川畅联系 做网站多少钱网销平台排名
  • 成都机械网站制作网络推广的主要内容
  • 公众平台账号授权怎么弄福州搜索引擎优化公司
  • 山东临沂网站建设2021十大网络舆情案例
  • 微信小程序开发网站建设优化关键词是什么意思
  • 手机版网站制作合肥seo软件
  • 网站空间买多大的百度商城app
  • 网站换ip 有多大影响软件开发培训多少钱
  • 青岛seo全网营销北京网站优化排名
  • 怎样建设相亲网站东莞网站建设seo
  • 广西网站开发软件百度风云榜明星
  • 网站打不开怎么回事网站收录登录入口
  • 武汉优联网站建设网站换友链平台
  • 富阳网站定制开发哪家公司好北京seo顾问推推蛙
  • 手机个人简历模板下载网站模板深圳建站公司
  • 房山区做网站百度账号一键登录
  • 如何制作网站首页网络营销师主要做什么
  • 叶梓 wordpress 主题宁波seo外包服务平台
  • nas上建设网站专业做网络推广的公司
  • 深圳做h5网站网络营销步骤