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

电子商务网站建设 ppt网站模板中心

电子商务网站建设 ppt,网站模板中心,ppt模板免费背景,网站制作工具推荐策略模式:一种行为型模式,这些设计模式特别关注对象之间的通信。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 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.cadmedia.cn/news/12848.html

相关文章:

  • 天津市建筑信息平台培训seo
  • 做网站建设的一般在哪儿找写文章在哪里发表挣钱
  • 如何做发表文章的网站东莞seo建站如何推广
  • 佛山seoseo检查工具
  • 网站域名邮箱上海做网络口碑优化的公司
  • 重庆市住房和建设委员会网站短期培训班学什么好
  • 合肥新站区有做网站的吗seo的基本内容
  • dedecms做资源下载网站友情链接
  • 龙岗做网站建设东莞网站设计公司
  • 贵阳官网建设价格如何进行搜索引擎优化
  • 泉州手机端建站模板百度排名点击
  • 深圳响应式网站建设公司广州seo公司排名
  • 网站滚动的图片是怎么做店铺推广方法
  • 建设网站方案ppt微信公众号运营
  • 济宁网站建设平台国内新闻最新
  • 广告视频素材网站品牌运营管理有限公司
  • 成都 网站建设培训班免费b站推广网站破解版
  • 四川网站建设制作关键词查询神器
  • 钦州网站建设排名标题优化
  • 陕西网站建设方案百度下载安装 官方
  • 衡阳网站建设公司东营优化路网
  • 宝安做棋牌网站建设哪家服务好seo优化公司信
  • 查降权网站google官网注册账号入口
  • 赛博网站建设四川公司怎么推广网络营销
  • 物联网应用技术就业方向及前景网站优化企业排名
  • 无法跳转到建设银行网站免费建站的网站有哪些
  • html5营销网站建设淘宝怎样优化关键词
  • 克拉玛依建设局网站百度灰色关键词排名
  • 网页设计与网站建设第2章在线测试无忧seo
  • 公司做网站的优点windows优化大师的作用