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

中日韩三国对日本网站推广优化外链

中日韩三国对日本,网站推广优化外链,室内设计师联盟首页,建一个网站怎么赚钱吗策略模式:一种行为型模式,这些设计模式特别关注对象之间的通信。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 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.yidumall.com/news/32078.html

相关文章:

  • 学生个人博客网站模板营销推广计划怎么写
  • 国土 住房与城乡建设部网站神马快速排名优化工具
  • 广州建站外包知名品牌营销策略
  • 中山建设网站如何免费建立一个网站
  • 1688做网站多少钱网站收录提交入口大全
  • 网站城市切换如何做宁波seo怎么做推广渠道
  • 使用wordpress的建网站整合营销方案案例
  • 宜兴做网站的公司有哪些海外seo推广公司
  • 个人网站如何进行网络推广google浏览器官网
  • 如何通过做网站挣钱抖音关键词排名软件
  • 新闻类网站如何做量化统计手机如何做网站
  • 制作网站的策划方案武汉网站关键词推广
  • 淄博市建设工程质量协会网站h5制作
  • wordpress设置手机浏览器邵阳网站seo
  • 东莞南城网站制作公司谈谈你对网络营销的看法
  • 深圳html5网站开发多少钱中国十大网络销售公司
  • 网站开发平台的公司推荐友情链接
  • 建设网站号码360广告推广平台
  • 网站推广的心得广告推广平台赚取佣金
  • 东莞网页设计费用报价seo黑帽技术工具
  • 东莞微联建站抖音推广运营
  • 网站推广的定义及方法手机端关键词排名优化软件
  • 做网站怎么改关键词互联网营销是干什么
  • 网站建设技术方案模板湖北网站seo策划
  • 品牌型网站建设解决方案国外免费网站建设
  • 南京网站制作公司怎么样search搜索引擎
  • 泰州做网站公司万网注册域名查询
  • 简单网站建设流程种子搜索神器网页版
  • wordpress 调用备案号seo优化网站查询
  • 金融网站的设计贵州seo推广