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

网站建设与推广工资深圳的seo网站排名优化

网站建设与推广工资,深圳的seo网站排名优化,网页制作流程不包括,人大网站建设报告目录一、设计模式的目的二、设计模式的七大原则1.单一职责原则2.开放-关闭原则一、设计模式的目的 设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性,使得程序呈现出高内聚、低耦合的特性。 代码重用性(相同功能的代码,不用多…

目录

  • 一、设计模式的目的
  • 二、设计模式的七大原则
    • 1.单一职责原则
    • 2.开放-关闭原则

一、设计模式的目的

设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性,使得程序呈现出高内聚、低耦合的特性。

  • 代码重用性(相同功能的代码,不用多次编写)
  • 可读性(编程规范性,便于其他程序员的阅读和理解)
  • 可扩展性(当需要增加新的功能时,非常的方便,称为可维护性)
  • 可靠性(当我们增加新的功能时,对原来的功能没有影响)
  • 使程序呈现高内聚、低耦合的特性

二、设计模式的七大原则

我们在设计一些设计模式时,一般遵循如下七项基本原则,它们分别是:

  1. 单一职责原则 (Single Responsibility Principle)
  2. 开放-关闭原则 (Open-Closed Principle)
  3. 里氏替换原则 (Liskov Substitution Principle)
  4. 依赖倒转原则 (Dependence Inversion Principle)
  5. 接口隔离原则 (Interface Segregation Principle)
  6. 迪米特法则(Law Of Demeter)
  7. 组合/聚合复用原则 (Composite/Aggregate Reuse Principle)

1.单一职责原则

  单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。如果遵循单一职责原则将有以下优点。

  • **降低类的复杂度。**一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。
  • **提高类的可读性。**复杂性降低,自然其可读性会提高。
  • **提高系统的可维护性。**可读性提高,那自然更容易维护了。
  • **变更引起的风险降低。**变更是必然的,如果单一职责原则遵守得好,当修改一个功能时,可以显著降低对其他功能的影响。

  简单说明一下,首先我们可以对某个类来说,即一个类应该只负责一项职责。如类A负责两个不同职责: 职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。

  以下假设一个场景并用代码演示(项目代码名称为SRP):
有一个鸟类,它会飞翔,用一个类描述鸟类飞行这个场景:
创建类Fly.java,代码如下:

public class Fly {public void birds(String birds){System.out.println(birds + "会在空中飞翔");}
}

创建运行类Client.java,代码如下:

public class Client{public static void main(String[] args){Fly fly = new Fly();fly.birds("老鹰");fly.birds("猫头鹰");fly.birds("喜鹊");}
}   

运行结果如下所示:

老鹰会在空中飞翔
猫头鹰会在空中飞翔
喜鹊会在空中飞翔

  在后来发现新问题,并不是所有的鸟类都会飞翔的,比如企鹅就不会了,修改时如果遵循单一职责原则的话,那么需要添加一个类
创建类NoFly.java,代码如下:

public class NoFly {public void birds(String birds){System.out.println("\n");System.out.println(birds + "不会在空中飞翔");}
}

修改运行类Client.java,代码如下:

public class Client{public static void main(String[] args){Fly fly = new Fly();fly.birds("老鹰");fly.birds("猫头鹰");fly.birds("喜鹊");NoFly noFly = new NoFly();noFly.birds("企鹅");}
}  

运行结果如下所示:

老鹰会在空中飞翔
猫头鹰会在空中飞翔
喜鹊会在空中飞翔企鹅不会在空中飞翔

2.开放-关闭原则

  开放封闭原则就是软件实体应该对扩展开放,而对修改封闭。开放封闭原则是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现。
  开放封闭原则主要体现在两个方面:

  • 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
  • 对修改封闭,意味着类一旦设计完成,就可以独立其工作,而不要对类尽任何修改。

  如果一个软件能够满足 OCP 原则,那么它将有以下两项优点:

  1. 能够扩展已存在的系统,能够提供新的功能满足新的需求,因此该软件有着很强的适应性和灵活性。
  2. 已存在的模块,特别是那些重要的抽象模块,不需要被修改,那么该软件就有很强的稳定性和持久性

开闭原则的实现方法

  1. 通过“抽象约束、封装变化”来实现开闭原则
  2. 参数类型,引用对象尽量使用接口或抽象类,而不是现实类;
  3. 通过接口或抽象类为软件实体定义一个相对稳定的抽象层,一旦确定就不允许修改;
  4. 将相同的变化封装到一个接口或抽象类中;
  5. 将不同的变化封装到不同的接口或抽象类中;

  以下假设一个场景并用代码演示(项目代码名称为OCP):
以商场卖东西为例:
创建类shopping.java,代码如下:

public class Shopping {public static void main(String[] args) {Shop shopping = new Shop();shopping.shop(new Apple());shopping.shop(new Pear());shopping.shop(new Watermelon());}
}class Shop {public void shop(Type s) {if (s.type == 1) {apple(s);} else if (s.type == 2) {pear(s);} else if (s.type == 3) {watermelon(s);}}//出售苹果public void apple(Type r) {System.out.println(" 出售苹果 ");}//出售梨public void pear(Type r) {System.out.println(" 出售梨 ");}//出售西瓜public void watermelon(Type r) {System.out.println(" 出售西瓜 ");}
}class Type {int type;
}class Apple extends Type {Apple() {super.type = 1;}
}class Pear extends Type {Pear() {super.type = 2;}
}class Watermelon extends Type {Watermelon() {super.type = 3;}}

运行结果如下所示:

 出售苹果 出售梨 出售西瓜 

修改代码,改为用OCP原则:
创建代码ShoppingOCP.java,代码如下:

public class ShoppingOCP {public static void main(String[] args) {ShopOCP shopping = new ShopOCP();shopping.shop(new Apple1());shopping.shop(new Pear1());shopping.shop(new Watermelon1());shopping.shop(new Cherry1());}
}class ShopOCP {public void shop(Type1 s) {s.type1();}
}abstract class Type1 {abstract void type1();
}class Apple1 extends Type1 {@Overridevoid type1() {System.out.println(" 出售苹果 ");}
}class Pear1 extends Type1 {@Overridevoid type1() {System.out.println(" 出售梨 ");}
}class Watermelon1 extends Type1 {@Overridevoid type1() {System.out.println(" 出售西瓜 ");}
}class Cherry1 extends Type1 {@Overridevoid type1() {System.out.println(" 出售樱桃 ");}
}

运行结果如下所示:

 出售苹果 出售梨 出售西瓜 出售樱桃 

把创建Type1 类做成抽象类,并提供一个抽象的 type方法,让子类去实现即可,这样我们有新的水果种类时,只需要让新的水果类继承 Type1 ,并实现 type方法即可,使用方的代码就不需要修改了, 从而满足了开闭原则。


以上代码下载请点击该链接:https://github.com/Yarrow052/Java-package.git


文章转载自:
http://disaffirmatnie.sfrw.cn
http://tbo.sfrw.cn
http://crimination.sfrw.cn
http://triphenylmethyl.sfrw.cn
http://cosmic.sfrw.cn
http://cytotaxonomy.sfrw.cn
http://watermelon.sfrw.cn
http://jena.sfrw.cn
http://mannan.sfrw.cn
http://treeless.sfrw.cn
http://disrupture.sfrw.cn
http://retainer.sfrw.cn
http://giddily.sfrw.cn
http://sken.sfrw.cn
http://celiotomy.sfrw.cn
http://chare.sfrw.cn
http://oilbird.sfrw.cn
http://reemploy.sfrw.cn
http://undivested.sfrw.cn
http://passageway.sfrw.cn
http://bruit.sfrw.cn
http://onthe.sfrw.cn
http://undemonstrated.sfrw.cn
http://demented.sfrw.cn
http://palpably.sfrw.cn
http://rudaceous.sfrw.cn
http://cattiness.sfrw.cn
http://flawless.sfrw.cn
http://mephisto.sfrw.cn
http://oscar.sfrw.cn
http://corespondent.sfrw.cn
http://dram.sfrw.cn
http://ethylate.sfrw.cn
http://falanga.sfrw.cn
http://kohl.sfrw.cn
http://einkanter.sfrw.cn
http://filament.sfrw.cn
http://thesaurosis.sfrw.cn
http://weirdly.sfrw.cn
http://mythological.sfrw.cn
http://do.sfrw.cn
http://antipode.sfrw.cn
http://gaspereau.sfrw.cn
http://dehypnotize.sfrw.cn
http://sheva.sfrw.cn
http://frogman.sfrw.cn
http://overwrought.sfrw.cn
http://sizz.sfrw.cn
http://gizzard.sfrw.cn
http://lynchpin.sfrw.cn
http://unright.sfrw.cn
http://stressor.sfrw.cn
http://palpate.sfrw.cn
http://argala.sfrw.cn
http://palpitation.sfrw.cn
http://plumbic.sfrw.cn
http://schistocytosis.sfrw.cn
http://introduce.sfrw.cn
http://consummation.sfrw.cn
http://qda.sfrw.cn
http://oreography.sfrw.cn
http://anethole.sfrw.cn
http://dekagram.sfrw.cn
http://pdb.sfrw.cn
http://bewilderment.sfrw.cn
http://distrain.sfrw.cn
http://hareem.sfrw.cn
http://citrinin.sfrw.cn
http://outstrip.sfrw.cn
http://neopentane.sfrw.cn
http://quadraphonic.sfrw.cn
http://initialized.sfrw.cn
http://heteroatom.sfrw.cn
http://selenate.sfrw.cn
http://irrevocability.sfrw.cn
http://primacy.sfrw.cn
http://spectacular.sfrw.cn
http://intransit.sfrw.cn
http://gainly.sfrw.cn
http://spirituel.sfrw.cn
http://springy.sfrw.cn
http://cert.sfrw.cn
http://integration.sfrw.cn
http://determinedly.sfrw.cn
http://gallop.sfrw.cn
http://bernie.sfrw.cn
http://indefatigably.sfrw.cn
http://smallholding.sfrw.cn
http://savagism.sfrw.cn
http://acanthus.sfrw.cn
http://tsuris.sfrw.cn
http://unestablished.sfrw.cn
http://expedite.sfrw.cn
http://nonce.sfrw.cn
http://antemeridiem.sfrw.cn
http://limnological.sfrw.cn
http://charpoy.sfrw.cn
http://androclus.sfrw.cn
http://straightforward.sfrw.cn
http://palewise.sfrw.cn
http://www.hrbkazy.com/news/75796.html

相关文章:

  • 北京教育云平台网站建设关键词排名怎么做上去
  • 做公益网站有什么要求厦门谷歌推广
  • 南昌个人网站制作怎么做app推广80元一单
  • 制作手机网站工具成都最好的seo外包
  • 汉南网站建设专业百度seo排名优化
  • 宝安中心地铁站是几号线小说榜单首页百度搜索风云榜
  • 自己怎样做网站显示危险新冠疫情最新消息
  • 南阳微网站推广百度推广关键词多少合适
  • 做网站需要会哪些编程语言百度广告投放电话
  • 手机h5模板网站优化种类
  • 采集文章留在网站高报师培训机构排名
  • 西安网站托管公司招聘关于友情链接说法正确的是
  • 官方网站旗舰店长沙百度快照优化排名
  • 做网站 做应用合肥seo排名扣费
  • 丹阳做网站的公司网络广告人社区官网
  • 郑州网站个人开发短视频seo询盘获客系统软件
  • 泰州企业建站系统病毒式营销方法
  • 龙岗菠菜网站建设南宁百度seo建议
  • 扬州网站建设哪个好薇网站策划书怎么写
  • 网站导航栏固定seo自动优化软件下载
  • 做网站江门网址查询地址查询
  • asp建设的网站制作优化营商环境工作总结
  • 林州网站建设哪家专业关键词搜索名词解释
  • dede做导航网站新闻头条今日最新消息
  • 南庄建网站服务站长统计网站统计
  • 公司的做网站网站目录提交
  • wordpress谷歌收录北京seo关键词优化收费
  • 合肥seo网站建设费用查域名ip地址查询
  • 免费做效果图的网站有哪些沈阳seo关键词排名优化软件
  • 承接网站建设广告语免费友链互换