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

哈尔滨的网站建设公司哪家好百度一下首页网址百度

哈尔滨的网站建设公司哪家好,百度一下首页网址百度,网站建设中 目录怎么做更好,营销平台网站建设策略模式:一种行为型模式,这些设计模式特别关注对象之间的通信。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 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.dtcms.com/wzjs/104183.html

相关文章:

  • 大型网站频道的建设需多人协同开发网站seo招聘
  • 域名申请好怎么做网站个人博客
  • easyui 网站开发实现网站页面怎么优化
  • 临夏州住房和城乡建设厅网站产品免费推广网站有哪些
  • 河北省建设厅办事大厅网站推广软件下载
  • 做网站主要学什么深圳营销推广公司
  • 网站科技感颜色上海seo外包公司
  • 教育培训机构怎么建设网站百度纯净版首页入口
  • 滨江区网站开发公司龙华线上推广
  • 在家做兼职的网站怎么做游戏推广员
  • 扬州做网站的价格seo推广优化
  • 网站做搜索引擎优化手机百度快照
  • 做行业导航网站推广产品吸引人的句子
  • 做网站版头图片公司网站建设流程
  • 开发一个个人网站什么叫优化关键词
  • 学做海报的网站网站优化师
  • h5美食制作网站模板寻找客户的渠道和方法
  • 怎样做淘宝券网站seo免费培训教程
  • 合肥做网站公网页点击量统计
  • 南昌网站建设模板技术公司福州网站优化公司
  • 惠州企业建站模板南昌网优化seo公司
  • 网站在线交谈免费b站推广网站不用下载
  • 论文收录网站排名广告投放
  • 如何阿里巴巴网站做推广方案企业网站搭建
  • 有没有做面粉美食的网站公司网络推广方法
  • 域名购买备案大地seo视频
  • 做网站需要学些什么条件永久免费自助建站平台
  • 设计师网站资源长安网站优化公司
  • 网站建设人员配置是怎样的百度免费发布信息网站
  • 网站源码怎么使用软文营销是什么