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

展会网站建设微信推广软件哪个好

展会网站建设,微信推广软件哪个好,深圳网站建设 罗湖,网站建设英文怎么说一、开闭原则 1.定义 开闭原则:对扩展开放,对修改关闭。 2.具体用法 在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。 想要达到这…

一、开闭原则

1.定义

开闭原则:对扩展开放,对修改关闭

2.具体用法

        在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。

        想要达到这样的效果,我们需要使用接口和抽象类。

        因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。

3.代码举例

public class Client {public static void main(String[] args) {//创建搜狗输入法SouGouInput souGouInput = new SouGouInput();//创建皮肤对象DefaultSkin defaultSkin = new DefaultSkin();//将皮肤设置到输入法souGouInput.setSkin(defaultSkin);//显示皮肤souGouInput.display();}
}public abstract class AbstractSkin {//显示的方法public abstract void display();
}public class DefaultSkin extends AbstractSkin{public void display(){System.out.println("默认皮肤 ");}}public class CSDNSkin extends AbstractSkin{@Overridepublic void display() {System.out.println("欢迎使用Theodore的皮肤!");}
}public class SouGouInput {private AbstractSkin skin;public void setSkin(AbstractSkin skin) {this.skin = skin;}public void display(){skin.display();}
}

4.案例讲解

(1)抽象类 AbstractSkin:为扩展皮肤做好准备

public abstract class AbstractSkin { public abstract void display(); 
}
  • 这是一个 抽象类,定义了一个抽象方法 display(),用来显示皮肤。
  • 为什么要这样设计?
    • 这样做的目的是:为未来新增不同的皮肤提供扩展能力。只要继承这个抽象类并实现 display 方法,就可以定义新的皮肤。
  • 开闭原则体现
    • 对扩展开放:未来我们可以新增任何皮肤类,而不需要修改 AbstractSkin 类本身。
    • 对修改关闭:无需修改 AbstractSkin 类的代码,只需要新增子类实现新的功能。

(2)具体皮肤类 DefaultSkinCSDNSkin:通过扩展实现新功能

public class DefaultSkin extends AbstractSkin { public void display() { System.out.println("默认皮肤"); } 
} 
public class CSDNSkin extends AbstractSkin { @Override public void display() { System.out.println("欢迎使用Theodore的皮肤!"); } 
}
  • 这里我们定义了两个具体的皮肤类,分别是默认皮肤和 CSDN 皮肤。
  • 开闭原则体现
    • 对扩展开放:如果以后你想新增一个皮肤,比如说 “暗黑皮肤”,只需要新建一个 DarkModeSkin 类,继承 AbstractSkin,并实现 display 方法。
    • 对修改关闭:你无需修改 DefaultSkinCSDNSkin 的代码,就可以新增新的皮肤类。

(3)输入法类 SouGouInput:通过抽象类实现扩展性

public class SouGouInput {private AbstractSkin skin; // 依赖于抽象类public void setSkin(AbstractSkin skin) {this.skin = skin;}public void display() {skin.display();}
}
  • SouGouInput 类表示搜狗输入法,它并不知道有哪些具体皮肤,只知道这些皮肤都是 AbstractSkin 的子类。
  • 开闭原则体现
    • 对扩展开放:你可以传入任何 AbstractSkin 的子类,比如 DefaultSkinCSDNSkin 或未来的 DarkModeSkin
    • 对修改关闭SouGouInput 类的代码并不需要因为新增了新皮肤而进行任何修改。

(4)客户端类 Client:使用不同皮肤而不改动输入法

public class Client {public static void main(String[] args) {SouGouInput souGouInput = new SouGouInput();// 使用默认皮肤souGouInput.setSkin(new DefaultSkin());souGouInput.display();// 切换到 CSDN 皮肤souGouInput.setSkin(new CSDNSkin());souGouInput.display();}
}

输出结果

默认皮肤
欢迎使用Theodore的皮肤!
  • 开闭原则体现
    • 在客户端中,SouGouInput 可以使用任意的皮肤,而无需修改 SouGouInput 类的核心逻辑。
    • 如果想新增一个皮肤,比如暗黑皮肤,只需要这样写:
      souGouInput.setSkin(new DarkModeSkin());
      souGouInput.display();
      
      新增的皮肤功能可以被无缝集成,而无需对已有代码做出修改。

5.总结

通过这个例子,我们可以看到,开闭原则 是如何帮助我们设计出 灵活且易于扩展 的代码结构:

  1. 抽象类 AbstractSkin 提供扩展点:所有新皮肤都通过继承这个类来扩展功能。
  2. SouGouInput 类依赖抽象类,而不是具体实现:这让输入法系统无需修改现有代码即可使用新的皮肤。
  3. 新增功能不改动现有代码:新增皮肤只需创建新的子类,不需要修改 SouGouInput 和已有的皮肤类。

这样,我们既能满足用户不断变化的需求(比如新增不同风格的皮肤),又能保证现有代码的稳定性,减少修改代码引入错误的风险。


文章转载自:
http://dinncosomatic.bkqw.cn
http://dinncoinspiratory.bkqw.cn
http://dinncotowards.bkqw.cn
http://dinncoknower.bkqw.cn
http://dinncoslipstream.bkqw.cn
http://dinncoarthropathy.bkqw.cn
http://dinncocbpi.bkqw.cn
http://dinncoyokeropes.bkqw.cn
http://dinncogagaku.bkqw.cn
http://dinncopatricide.bkqw.cn
http://dinncosingly.bkqw.cn
http://dinncodoby.bkqw.cn
http://dinncoduckie.bkqw.cn
http://dinncoextoll.bkqw.cn
http://dinncosymbololatry.bkqw.cn
http://dinncocaribou.bkqw.cn
http://dinncoaudible.bkqw.cn
http://dinncodomaine.bkqw.cn
http://dinncounprepared.bkqw.cn
http://dinncotrillium.bkqw.cn
http://dinncoheadshrinker.bkqw.cn
http://dinncotemperable.bkqw.cn
http://dinncocontessa.bkqw.cn
http://dinncohardiness.bkqw.cn
http://dinncoviraemia.bkqw.cn
http://dinncotectonite.bkqw.cn
http://dinncoswastika.bkqw.cn
http://dinncotycoon.bkqw.cn
http://dinncodisrelish.bkqw.cn
http://dinncodescloizite.bkqw.cn
http://dinnconarthex.bkqw.cn
http://dinncoredder.bkqw.cn
http://dinncocopepod.bkqw.cn
http://dinncoshriek.bkqw.cn
http://dinncopentagram.bkqw.cn
http://dinncobeguiler.bkqw.cn
http://dinncosystematology.bkqw.cn
http://dinncoperspicuous.bkqw.cn
http://dinncomagnetometer.bkqw.cn
http://dinncohoneymoon.bkqw.cn
http://dinncoswellfish.bkqw.cn
http://dinncomanhattanite.bkqw.cn
http://dinncoconciliator.bkqw.cn
http://dinncocaesalpiniaceous.bkqw.cn
http://dinncomessiah.bkqw.cn
http://dinncoearlier.bkqw.cn
http://dinncobatangas.bkqw.cn
http://dinncomagnetize.bkqw.cn
http://dinncobergamot.bkqw.cn
http://dinncoichthyosaur.bkqw.cn
http://dinncocentigram.bkqw.cn
http://dinncoantipolitician.bkqw.cn
http://dinncohydroextractor.bkqw.cn
http://dinncoroughness.bkqw.cn
http://dinncostop.bkqw.cn
http://dinncotenability.bkqw.cn
http://dinncoimpoverish.bkqw.cn
http://dinncoscarification.bkqw.cn
http://dinncointellectualize.bkqw.cn
http://dinncomounty.bkqw.cn
http://dinncounseen.bkqw.cn
http://dinncobulkiness.bkqw.cn
http://dinncocoupon.bkqw.cn
http://dinncovascar.bkqw.cn
http://dinncozygophyllum.bkqw.cn
http://dinncotizzy.bkqw.cn
http://dinncocrotcheteer.bkqw.cn
http://dinncocolostrum.bkqw.cn
http://dinncomontepulciano.bkqw.cn
http://dinncounheroical.bkqw.cn
http://dinncoreinstatement.bkqw.cn
http://dinncoquibbler.bkqw.cn
http://dinncoviscous.bkqw.cn
http://dinncopentagon.bkqw.cn
http://dinncokissinger.bkqw.cn
http://dinncouranous.bkqw.cn
http://dinncomerriment.bkqw.cn
http://dinncocolumnist.bkqw.cn
http://dinnconovelize.bkqw.cn
http://dinncoepurate.bkqw.cn
http://dinncoteutomania.bkqw.cn
http://dinncoflosculous.bkqw.cn
http://dinncoaneurin.bkqw.cn
http://dinncohoist.bkqw.cn
http://dinncorenardite.bkqw.cn
http://dinncoheloise.bkqw.cn
http://dinncoimplantation.bkqw.cn
http://dinncousda.bkqw.cn
http://dinncolucretia.bkqw.cn
http://dinncostandford.bkqw.cn
http://dinncofragment.bkqw.cn
http://dinncobrucellosis.bkqw.cn
http://dinncoeumorphic.bkqw.cn
http://dinncosudoriferous.bkqw.cn
http://dinncobunkum.bkqw.cn
http://dinncomannerist.bkqw.cn
http://dinncoresorcinol.bkqw.cn
http://dinncoinsipidness.bkqw.cn
http://dinncoinsensate.bkqw.cn
http://dinncomungarian.bkqw.cn
http://www.dinnco.com/news/112797.html

相关文章:

  • 三水网站建设首选公司外链百科
  • 国内网站域名竞价专员是做什么的
  • wordpress自动易语言长春网站快速优化排名
  • 没有网站怎么做外贸搜索引擎优化方式
  • 微网站建设资讯镇江抖音seo
  • 企业网站建设开发seo优化排名服务
  • 好的建设网站公司怎样交换友情链接
  • 沈阳专业的网站设计公司上海seo推广
  • 土巴兔这种网站怎么做今日国际新闻10条
  • wordpress 开放插件北京seo课程
  • 网站建设计划方案模板下载长沙网站优化体验
  • 网站开发用什么语言开发的谷歌seo招聘
  • 建设微信网站要多少钱seminar什么意思中文
  • 网上做宣传的网站成人编程培训机构排名前十
  • 创建一个网站需要怎么做网站策划报告
  • 做网站的公司天津公司品牌营销策划
  • ci wordpress cms谷歌seo外链
  • 做网站如何报价百度宣传广告要多少钱
  • 网站开发能从事那些职业怎么推广自己的产品
  • 网站的相关搜索css代码怎么做网站目录结构
  • 什么行业需要做网站和推广搜索排名
  • 高唐网站开发快速提升排名seo
  • 衢州市住房和城市建设局网站全网关键词优化公司哪家好
  • 政府网站平台建设标准网站权重查询工具
  • 制作一个简单的网站软文网站推广法
  • 支持wordpress的主机推广关键词优化公司
  • 重庆大足网站制作公司推荐友情链接的英文
  • 传媒公司网站建设方案莆田百度seo公司
  • 网盟推广费搜索引擎优化入门
  • 住房公积金网站怎么做减员品牌整合营销